如何在rails API中有效地使用Devise和Doorkeeper?

the*_*tic 10 authentication authorization ruby-on-rails devise doorkeeper

我很难理解流行的Doorkeeper和Devise宝石的责任和能力.我在授权和身份验证方面没有太多经验,所以如果我误解了这些方面的某些方面,请原谅我.我努力尝试,如果我做了什么,我想以正确的方式做,所以这是我目前的情况:

我想构建一个仅限API的rails应用程序,负责在用户注册和使用该服务时对其进行身份验证和授权.我精心挑选了两款颇受欢迎的宝石,名为Doorkeeper(授权)和Devise(身份验证).

我现在已经有了这个结构并且它可以工作,但是,我有完全落后于这些宝石的责任的问题.据我了解,Devise gem用作身份验证层,这意味着可以识别并登录用户(下面将讨论其他功能).另一方面,门卫将确保资源只能由获得授权的成员访问.我选择了Doorkeeper进行OAuth2集成,因为我的服务器需要能够在将来向潜在的第三方提供API访问权限.

我的问题首先是我对这些宝石的假设是否正确.

这是当前的身份验证/授权流程:

问题:用户注册,如果我的API没有Devise提供的预配置视图,我如何利用Devise发送确认电子邮件?(附注:可恢复,可记住,可追踪和可确认的特征在用户模型/迁移中.)

同样,我很想知道如何实现潜在的密码重置.请注意,只要它们适用于我的用例,对示例的引用就足够了.

我知道Devise提供了这些功能,但是如果不按照预先配置的(视图?)路线就很难弄清楚如何做到这一点.

例如,当用户注册时,他点击我自己user_controller的创建方法,基本上只是创建一个新用户,应该自动发送确认电子邮件(如果我们假设我的邮件配置是正确的)?

我不完全确定避免预先配置的路线是否有意义,这就是为什么我想听听更多有经验的人,如果我的想法是正确的,或者我是完全关闭的话,他们过去曾经使用过那些宝石这个.

gdu*_*lle -1

Devise确实是为你做所有事情的,如果你绕过自动机制并想手动重新实现它们......你就会犯错误。不要绕过控制器机制并使用设备的 wiki 进行小型自定义,例如在创建/更新后更改重定向。

Devise 为您处理确认电子邮件(可确认)和密码重置(可恢复)系统,因此请使用他们的系统,这只是激活的选项。

如果您想更改他们的视图(我们总是想自定义布局),您可以:

rails g devise:views
Run Code Online (Sandbox Code Playgroud)

它将通过您的自定义视图保持设计流程。

如果您想停止使用特定机制,只需将其从模型中删除即可。

devise :database_authenticatable, :registerable, :confirmable, :recoverable
Run Code Online (Sandbox Code Playgroud)

如果根本不使用它们,避免预配置的路由是有意义的(意味着删除该选项并在路由中使用 except ),但是当您想要 Devise 提供的所有机制时,它在这里没有意义。

他们的 Wiki 真的很密集,但是要反复阅读,你需要的一切都在这里。

最后:是的,Gatekeeper 提供了一个很好的 OAuth2 提供程序系统,并且与 Devise 混合得很好,所以你在这里做出了一个很好的选择。他们的视图系统也是可定制的。

您可能还想看看cancancan,它可以处理用户的角色和权限(简单、API、管理等)。

希望能帮助到你 !