5

我目前使用 Devise 2.1 + Rails 3.2.x 来验证用户。我还将很快添加 OmniAuth-Facebook 和 Twitter 支持。

我想将这个现有的基础设施与 Backbone.js 一起使用。从身份验证的角度来看,您能否告诉我这是否是正确的工作流程?

  1. 用户通过 Devise(或 OmniAuth)登录
  2. 使用 Devise 的 Token Authenticatable 返回一个令牌?
  3. 骨干以某种方式访问​​令牌并将其作为 API 调用的一部分附加?我不需要 API 来创建用户,这由 Devise 处理。

问题: 1. 你会这样实施吗?2. 关于#2 和#3 的任何建议/代码示例?3.您将如何处理授权?我不认为CanCan会起作用。

PS 我阅读了很多文章,包括:http: //jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/。他们似乎专注于使用 API 进行身份验证,而不是在身份验证完成后保护 API 资源。

4

2 回答 2

2

实际上,我通过以下方式更容易做到这一点:

用户通过 Devise/OmniAuth 登录,不需要创建身份验证令牌如果我使用启用 Devise 的相同操作来提供 REST API,它将自动使用会话信息进行身份验证,因此无需额外的令牌捕获/重新发送是需要的。

PS RABL 是为在 Rails 中创建 API 而生成的。

于 2012-06-14T02:16:04.560 回答
0
  1. 工作流程是正确的。
  2. 我在互联网上找到了一些零碎的东西,也许我以后可以在博客上发表一下
  3. 正确的。您可以覆盖Backbone.sync,或者如果您使用 jQuery,您可以全局配置 jQuery。这里的例子

除非您希望客户端了解其角色,否则授权将在服务器端进行相同处理。在服务器端,您将通过其令牌找到当前用户并进行相应授权。如果您确实需要知道用户具有哪些角色,您可以在用户进行身份验证时发送角色。

于 2012-06-08T17:19:45.720 回答