2013-05-20 42 views
10

Tôi đang viết một dịch vụ RESTful đơn giản, sử dụng Phil Sturgeon Rest Server. Tôi muốn bảo vệ các phương pháp của mình bằng cách sử dụng khóa API được cung cấp cùng với thư viện này.Phím xác thực mã vạch cho dịch vụ REST

Thật không may, đây không phải là tài liệu rất tốt và tôi là một chút bị mất.

Tôi muốn xác thực người dùng (email/mật khẩu), sau đó tạo khóa xác thực để gửi cho mọi yêu cầu khác. Nhưng có vẻ như tôi đã cần chìa khóa auth để tạo ra một ... Tạo một khóa giả không có vẻ rất an toàn. Xin lỗi nếu nó là một câu hỏi ngớ ngẩn, nhưng những gì nên là thực hành tốt nhất?

Trả lời

11

Nếu bạn đã quen thuộc với các API khác, bạn sẽ thấy một mẫu chung. Tôi khuyên bạn nên sử dụng phương pháp xác thực nơi người dùng chuyển email và mật khẩu của họ, phương thức này sẽ trả lại khóa xác thực duy nhất được tạo. Khóa xác thực sẽ giống như id phiên, hãy nghĩ về cách hoạt động của cookie. Sau đó, tất cả các phương thức API khác nên kiểm tra $ this-> post ('auth') và bạn cần so sánh điều này với trình xử lý phiên của bạn (tức là cơ sở dữ liệu hoặc phiên) trước khi bạn xử lý từng yêu cầu.

Dường như có rất nhiều mã? Không.

Tất cả các mô hình của bạn nên có một nhà xây dựng quá tải:

class MyAPIController extends Rest_controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 

     if(!authCheck($this->post('auth'))){ 
      returnFailedResponse(); 
      exit(); 
     } 
} 

Sau đó viết bạn API bình thường, giống như trong các ví dụ trên trang web Phil Sturgeon của. http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

Tạo mô hình có authCheck để kiểm tra xem khóa auth có hợp lệ không và tạo phương thức cho returnFailedResponse trả lại 401 không được ủy quyền.

Trong bộ điều khiển khác, hãy gọi nó là 'Auth', sử dụng bộ điều khiển bên trên.

Bây giờ mọi cuộc gọi đến api của bạn nên đặt tiêu đề cho Xác thực. Ví dụ 'Auth: 12m34k23b'.

+0

Cảm ơn bạn! Tôi đã kết thúc làm một cái gì đó tương tự như thế này. Tôi sẽ đánh dấu câu trả lời của bạn là được chấp nhận. – jose

+0

im hiện đang ở trạng thái cách truy cập phiên. tôi đã cố gắng đăng bài đã thành công angd trong việc tạo ra phiên nhưng yêu cầu tiếp theo là không đăng nhập. xin vui lòng giúp cant hiểu cách xác thực :( –

Các vấn đề liên quan