17

Tôi có ứng dụng Rails 3.1 sử dụng Devise for Authentication với mô hình User đơn giản với email, mật khẩu, v.v. Tôi cần có khả năng xác thực từ ứng dụng iphone. Làm cách nào để hiển thị chức năng này? Câu trả lời rộng là tốt vì tôi không chắc chắn các tùy chọn của tôi là gì.Hiển thị Rails/Devise Authentication cho ứng dụng iOS

+0

Tất cả các bộ điều khiển phát sinh trả lời json và xml, làm cho giao diện REST hoàn toàn khả thi – zsquare

+2

Thành thật mà nói. Tôi hiểu REST và API của tôi hoạt động tốt. Nhưng tôi không thể nắm bắt được khái niệm đăng nhập từ thiết bị iOS. (Tôi đang sử dụng RestKit như một khuôn khổ, nếu điều đó giúp). Ai đó có thể xin vui lòng đi qua các bước cần thiết để có được iOS đưa ra để xác thực với các ứng dụng đường ray, và sau đó liên tục gọi các cuộc gọi REST để có được thông tin? Làm cách nào để bạn lưu trữ phiên? Bạn có thể? Bạn có cần chuyển thông tin đăng nhập của người dùng với mọi cuộc gọi không? Bạn có thể sử dụng một mã thông báo của một số loại? Bạn định dạng cuộc gọi để nhận thông tin như thế nào? Giúp đỡ sẽ là tuyệt vời cho tôi quá !! –

+0

@Wayfarer Chính xác. Tôi nghĩ Dịch vụ Web cần truyền một số mã thông báo cho thiết bị khi nó đã được xác thực thành công mà thiết bị có thể sử dụng để xác định chính nó với bất kỳ liên lạc nào, nhưng tôi không chắc điều này sẽ hoạt động như thế nào trong các điều kiện thực tế. Rõ ràng mô hình Người dùng có thể lưu trữ một số loại mã thông báo duy nhất cho mỗi người dùng được chia sẻ sau khi xác thực, nhưng tôi không chắc chắn về cơ chế phục vụ đó. – Undistraction

Trả lời

11

Cách nhanh nhất là chỉ cần bật http_authenticatable và chuyển tên người dùng và mật khẩu thông qua Xác thực cơ bản HTTP. Trong khi đó là cách dễ nhất, điều đó có nghĩa là bạn phải lưu trữ mật khẩu người dùng trong văn bản thuần túy và gửi nó cùng với mọi yêu cầu bạn thực hiện.

Tùy chọn tốt hơn là xác thực mã thông báo, bạn có thể chuyển qua thông số hoặc Xác thực cơ bản HTTP (trong trường hợp này bạn có thể đặt mật khẩu thành "X" và mã thông báo cho tên người dùng). Ưu điểm của việc này là bạn chỉ có thể sử dụng tên người dùng/mật khẩu ban đầu để nhận mã thông báo và sau đó sử dụng nó để xác thực thêm. Cách đơn giản nhất để thực hiện xác thực mã thông báo với số lượng mã tối thiểu là kích hoạt xác thực HTTP trong Devise và thiết lập bộ điều khiển mới yêu cầu người dùng đăng nhập và tất cả điều đó là kết quả của reset_authentication_token. Khi bạn có mã thông báo, bạn sẽ chuyển nó tới bất kỳ yêu cầu xác thực HTTP nào trong tương lai để đăng nhập chúng.

+0

Có cho phép http_authenticatable sau đó thả xuống trường Tên người dùng/Mật khẩu kinh khủng nếu bạn thử và đăng nhập từ trang web? Tôi vẫn cần người dùng đăng nhập qua trang web và thông qua giao diện rõ ràng. –

+0

@Zachary Anker Cảm ơn câu trả lời của bạn. Bạn có thể xác nhận tôi hiểu điều này đúng không ... Một thiết bị sẽ truy cập http://somesite.com/users/sign_in, chuyển tên người dùng và mật khẩu dưới dạng thông số biểu mẫu của yêu cầu POST. Rails sau đó sẽ kiểm tra các chi tiết này và nếu đúng sẽ trả về một mã thông báo. Sau đó, thiết bị sẽ lưu trữ mã thông báo đó và sử dụng nó trong bất kỳ liên lạc nào trong tương lai. Vậy đường ray lấy mã từ đâu? Nó có tạo ra một mã thông báo duy nhất cho mỗi người dùng không. Mã thông báo có hết hạn không? – Undistraction

+0

@Wayfarer Nó không nên. Miễn là nó là một định dạng điều hướng chẳng hạn như HTML, nó không nên bật lên một hộp thoại xác thực HTTP. Nếu bạn không muốn nó hiển thị, bạn cũng có thể tự mình kiểm tra mật khẩu trong bộ điều khiển trả về mã thông báo xác thực. –

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