ruby-on-rails – 使用Devise,Doorkeeper和OAuth2令牌的API和应用程序身份验证

我有桌面应用程序和移动应用程序.我想为这两个“设备”使用相同的rails应用程序.换句话说,我希望移动应用程序在桌面应用程序上请求内容.

我使用Devise进行身份验证(电子邮件密码).
我在桌面应用程序上实现了Doorkeeper,以便为我的移动应用程序生成一个Oauth2令牌.

这是我的问题:

我的桌面应用程序控制器中有before_filters集,以确保它们的安全.

>我不知道移动应用程序应该如何与Devise共享OAuth2令牌,以便进行身份验证并访问我的受保护的控制器?

事实上,现在,Doorkeeper应该使用doorkeeper_for:所有代码检查我的控制器中的移动令牌.但是要做到这一点我不得不设法保护before_filter:authenticate_user!

我应该在设计中保存oauth令牌吗?

我误解了移动应用程序应该如何使用设计和OAuth2原型认证?

谢谢

解决方法

这是老的,但还没有答案.

Essential Devise和Doorkeeper正在做同样的事情,Devise使用会话进行身份验证(或者如果您启用了会话身份验证),而Doorkeeper会在每个请求中发送的OAuth令牌进行身份验证.

您可能想要做的是将应用程序分为两个访问点,使用Devise进行常规桌面访问,并使用Doorkeeper进行API访问.启用仅限常规桌面控制器的设计路线,并启用只有api控制器的门卫路由.

在您的API应用程序控制器中,如果doorkeeper_token,则可以将current_user替换为User.find(doorkeeper_token.resource_owner_id).这将符合Devise认证的方式.

或者,如果您的API不必使用OAuth,您可以使用Devise的token_authenticable配置,它提供与OAuth的承载令牌相似的功能.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...