2012-07-13 31 views
12

Tôi có cả ứng dụng Máy tính để bàn và ứng dụng dành cho thiết bị di động. Tôi muốn sử dụng cùng một ứng dụng đường ray cho cả hai "thiết bị". Nói cách khác, tôi muốn ứng dụng di động yêu cầu nội dung trên ứng dụng Desktop.Xác thực API và Ứng dụng bằng cách sử dụng mã thông báo Devise, Doorkeeper và OAuth2

Tôi sử dụng Devise để xác thực (email + mật khẩu). Tôi đã triển khai Doorkeeper trên ứng dụng Desktop để tạo mã thông báo Oauth2 cho ứng dụng di động của mình.

Dưới đây là những câu hỏi của tôi:

Tôi có before_filters bộ trong điều khiển ứng dụng máy tính để bàn của tôi để an toàn cho họ.

  • Tôi không chắc chắn như thế nào ứng dụng di động nên chia sẻ các mã thông báo với lập mưu OAuth2 để được xác thực và truy cập vào bộ điều khiển được bảo vệ hay không?

Thực tế, ngay bây giờ, đó là Người gác cửa nên kiểm tra mã thông báo di động trong bộ điều khiển của tôi với mã số doorkeeper_for :all. Nhưng để làm điều đó, tôi phải không thể bảo vệ được sự phát triển before_filter :authenticate_user! ...

Tôi cũng nên lưu mã thông báo oauth?

Tôi hiểu nhầm cách các ứng dụng dành cho thiết bị di động nên xác thực bằng protocole ra và OAuth2 như thế nào?

Thx

Trả lời

9

Đây là cũ, nhưng chưa có câu trả lời.

Cơ bản Devise và Doorkeeper đang làm điều tương tự, Devise xác thực bằng cách sử dụng phiên (hoặc mã thông báo xác thực nếu bạn đã bật) trong khi Doorkeeper xác thực với mã thông báo OAuth được gửi trong mọi yêu cầu.

Điều bạn có thể muốn làm là chia ứng dụng thành hai điểm truy cập, có quyền truy cập máy tính để bàn thông thường bằng Devise và API sử dụng Doorkeeper. Cho phép các tuyến đường Devise chỉ dành cho các bộ điều khiển máy tính để bàn thông thường và cho phép các tuyến đường cửa chỉ dành cho các bộ điều khiển api.

Trong Bộ điều khiển ứng dụng API, bạn có thể ghi đè current_user thành một cái gì đó như User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token. Điều này sẽ phù hợp với cách Devise xác thực là tốt.

Ngoài ra, nếu API của bạn không phải sử dụng OAuth, bạn có thể sử dụng cấu hình token_authenticable của Devise, cung cấp các tính năng tương tự như Toker Ringer của OAuth.

+0

tại sao chúng ta không nên sử dụng xác thực dựa trên mã thông báo trên cả máy tính để bàn và thiết bị di động? – lakesare

0

Tôi không chắc chắn nếu tôi hiểu câu hỏi của bạn nhưng Người quản lý khóa toàn bộ bộ điều khiển của bạn. Không thể truy cập thông qua xác thực Devise nếu bạn có doorkeeper_for :all trong bộ điều khiển của mình.

Bạn sẽ cần một bộ điều khiển riêng biệt để chia sẻ dữ liệu của mình qua OAuth2, chẳng hạn như bộ điều khiển API chẳng hạn. Sau đó, bạn có thể yêu cầu dữ liệu, ví dụ: qua số protocol://myapp:1234/ressource?access_token=thetoken.

Đó có phải là những gì bạn yêu cầu không? Khác xin vui lòng làm rõ :)

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