Omniauth,Devise,Open ID,CanCan - 什么是什么以及何时使用哪个解决方案用于Rails API应用程序

ban*_*ing 3 openid authorization ruby-on-rails oauth-2.0 omniauth

所以我正在开发一个Rails应用程序 - 主要提供API,我想锁定behjind一个很好的授权系统.我创建了Rails应用程序来呈现HTML,为此我使用了Devise和CanCan.这次我想为我的客户提供JSON服务.我基本上有以下要求:

  1. 需要一个强大的授权系统
  2. 用户应该能够使用现有的应用程序登录,例如facebook,twitter,链接和谷歌
  3. 应该有完整的堆栈授权

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

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

所以基本上我的一天研究基本上只是让我更加困惑.当我使用这些和我的要求时,我会使用这些!我正在努力理解字母汤,有人可以帮助我理解这一点

jan*_*223 6

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

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

如果你想在你的API上推出自己的oauth解决方案,门卫是一个oauth提供商的宝石.如果您希望您的应用程序以与Google或FAcebook相同的方式运行,为用户提供oauth端点进行身份验证,那就是这种情况.从你上面所说的,我不认为是这种情况.

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