我很难理解流行的Doorkeeper和Devise宝石的责任和能力。我在授权和身份验证方面没有太多经验,所以如果我误解了这些方面的某些方面,请原谅我。我努力尝试,如果我做某事,我想以正确的方式做,所以这是我目前的情况:
我想构建一个仅限API的rails应用程序,负责在用户注册和使用该服务时对其进行身份验证和授权。我精心挑选了两款颇受欢迎的宝石,名为Doorkeeper(授权)和Devise(身份验证)。
我目前已经建立了这种结构并且它可以工作,但是,我在完全落后于这些宝石的责任方面遇到了问题。据我了解,Devise gem用作身份验证层,这意味着可以识别并登录用户(下面将讨论其他功能)。另一方面,门卫将确保资源只能由获得授权的成员访问。我选择了Doorkeeper进行OAuth2集成,因为我的服务器需要能够在将来向潜在的第三方提供API访问权限。
我的问题首先是我对这些宝石的假设是否正确。
以下是当前的身份验证/授权流程:
问题:用户注册,如果我的API缺少Devise提供的预配置视图,如何利用Devise发送确认电子邮件? (附注:可恢复,可记住,可追踪和可确认的特征在用户模型/迁移中。)
同样,我很想知道如何实现潜在的密码重置。请注意,只要它们适用于我的用例,对示例的引用就足够了。
我知道Devise提供了这些功能,但是如果不按照预先配置的(视图?)路线就很难弄清楚如何做到这一点。
例如,当用户注册时,他点击我自己的user_controller
创建方法,该方法基本上只是创建一个新用户,应该自动发送确认电子邮件(如果我们假设我的邮件配置是否正确)?
我不完全确定避免预先配置的路线是否有意义,这就是为什么我想听听更多有经验的人,如果我的想法是正确的,或者我是完全脱离这个。
答案 0 :(得分:0)
Devise实际上是为您做的所有事情,如果您绕过自动机制,并想手动重新实现它们,则会出错。 不要绕过控制器机制,而要使用设备的Wiki进行小型自定义,例如在创建/更新后更改重定向。
Devise为您处理确认电子邮件(可确认)和密码重置(可恢复)系统,因此请使用其系统,这只是激活选项。
如果您想更改其视图(我们一直想自定义布局),可以:
rails g devise:views
它将与您的自定义视图一起保持设计流程。
如果您想停止使用特定的机制,只需将其从模型中删除即可。
devise :database_authenticatable, :registerable, :confirmable, :recoverable
如果根本不使用预先配置的路由,那么避免使用它们是有意义的(意味着删除该选项并在路由中使用except),但是正如您所希望的那样,Devise提供的所有机制在这里都没有意义。
他们的Wiki确实很密集,但是要反复阅读,您所需的一切都在这里。
最后: 是的Gatekeeper提供了一个很好的OAuth2提供程序系统,并且与Devise很好地融合在一起,因此您在这里做了一个不错的选择。他们的视图系统也是可定制的。
您可能还想看一下cancancan,它们可以为用户(简单,API,管理员等)处理角色和权限。
希望有帮助!