【发布时间】:2013-05-10 03:36:05
【问题描述】:
我正在创建一个基于 Rails 和 AngularJS 的应用程序。我想通过使用 gem Devise 来实现一个认证系统。 我想知道该怎么做。我读了一些关于属性的文章 :token_authenticable :我必须将我的令牌放在我将发送的所有请求的末尾。
我也看过这个演示项目https://github.com/sectore/CafeTownsend-Angular-Rails 他们实现了一个可以创建和删除服务器会话的 SessionService。 (我想,我可以使用 Devise 来完成这项工作)。在 Rails 控制器中,他们通过 session[:user_id] 了解用户是否通过身份验证...
我的问题:我需要令牌系统还是 cookie 系统来验证我的请求?
谢谢
【问题讨论】:
-
这个问题是关于 AngularJS 还是 Devise?我已经使用 AngularJS 完成了基于令牌和基于 cookie 的身份验证,看起来 Devise 支持两者(通过 Token Authenticatable 和 Rememberable)。
-
我的问题是当我使用 angularjs 和 rails 作为 API 时如何设计一个好的认证系统。如果两种解决方案都支持,我不知道。也许基于cookie的更容易实现
-
Cookie 更容易,因为浏览器会在每次请求时自动发送它们。如果您计划支持非浏览器客户端,您应该使用在 HTTP 标头中传递的令牌 - 查看 $http.defaults.headers.common 为所有 $http 请求注入您的令牌标头。
-
给个反馈:我最终选择了令牌系统,因为没有为 POST 请求发送 session_id。令牌系统实施起来有点棘手,但现在我确切地知道会发生什么。
-
看看这个 railscasts railscasts.com/episodes/352-securing-an-api 它可能对你有帮助
标签: ruby-on-rails-3 angularjs devise