【问题标题】:Authentication with AngularJs and Devise Rails, Do I need token system?使用 AngularJs 和 Devise Rails 进行身份验证,我需要令牌系统吗?
【发布时间】: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


【解决方案1】:

如果您的服务器将与您的客户端位于与您的客户端相同的域,即:只会期待来自您的 Angular 客户端的请求,并且客户端与服务器托管在相同的 URL 上,那么您应该在 ssl 上使用 cookie(为简单起见),例如:

您的网站:

www.myangularsite.com/somepage

你的服务器

www.myangularsite.com/someserverfunction

他们都拥有相同的域。

但是,如果您打算将服务器端放在不同的 URL 上,可能作为 API,那么请使用令牌,例如:

您的网站:

www.myangularsite.com/somepage

你的服务器

api.myangularsite.com/someserverfunction
or
myrubyapi.com/someserverfunction

网址域不同。

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 2012-11-04
    • 1970-01-01
    • 2021-10-16
    • 2021-06-03
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多