4

所以我正在开发一个 Rails 应用程序——主要服务于 API,我想通过一个好的授权系统来锁定它。我创建了渲染 HTML 的 Rails 应用程序,为此我使用了 Devise 和 CanCan。这次我想为我的客户提供 JSON。我基本上有以下要求:

  1. 需要一个强大的授权系统
  2. 用户应该能够使用现有的应用程序登录,例如 facebook、twitter、linked in 和 google
  3. 应该有可用的全栈授权

现在这是我编写的第一个提供 API 的应用程序,所以我开始研究,到目前为止,我发现了人们使用的以下解决方案:

  1. 我见过人们使用带有 CanCan 的 Devise
  2. 我见过人们谈论使用 Oauth2 http://railscasts.com/episodes/353-oauth-with-doorkeeper?autoplay=true
  3. 我听说过……“使用门卫”
  4. 我听说使用...“使用omniauth”

所以基本上我 1 天的研究基本上只是让我更加困惑。当我使用这些以及我的要求时,我将使用哪种组合!我很难理解字母汤,有人能帮我理解吗

4

1 回答 1

8

Devise 是适用于所有类型的 Rails 应用程序的身份验证引擎。Devise 允许针对用户名/密码进行身份验证、令牌身份验证(适用于 API)和 oauth 提供者(例如 Google、Facebook 等)。这显然允许您拒绝访问 API,除非用户通过您提供的服务之一登录。

CanCan 是一个授权系统,它将在 Devise 之上运行,允许用户根据他们在系统中的角色访问系统的某些部分。CanCan 有一个非常灵活的 DSL 提供cancannot方法来允许或拒绝访问视图或控制器操作。

如果您想在 API 之上推出自己的 oauth 解决方案,Doorkeeper 是一个 oauth 提供者的瑰宝。如果您希望您的应用程序以与 Google 或 Facebook 相同的方式为用户提供身份验证端点,这将是这样的。从你上面所说的,我认为情况并非如此。

鉴于您在上面提供的要求,我相信 Devise 和 CanCan 将是我会选择的路线。这将允许用户首先通过用户名/密码或某些 oauth 提供者进行身份验证,然后允许令牌身份验证以访问您的 API。然后,您可以通过 CanCan 锁定对特定操作的访问。

于 2012-08-26T15:32:41.923 回答