允许经过身份验证的Devise用户访问Doorkeeper受保护的控制器操作

时间:2016-11-24 05:24:43

标签: ruby-on-rails devise ruby-on-rails-5 doorkeeper

我的API将OAuth2与Doorkeeper一起使用,而UI级别的身份验证则使用Devise。

我的应用程序由简单的ol'苗条文件,但我需要添加一个自动完成搜索输入,通过AJAX将查询发送到其中一个API端点。

用户通过设计会话进行身份验证,并以current_user的形式提供,但由于API端点受before_action :doorkeeper_authorize!保护,因此我获得了401。

无论如何,绕过"绕过" doorkeeper_authorize!用户是否已通过Devise进行身份验证?

一种选择是将操作复制出API控制器并添加到我的" normal"以UI为中心的控制器,只是用Devise保护,但这只是丑陋。

1 个答案:

答案 0 :(得分:0)

这是我用过的解决方案。

before_filter :doorkeeper_authorize!, :unless => :logged_in?

我没有使用设计,所以我不熟悉用于检查身份验证的方法,但是我的application_controller上有一个logged_in?方法,如果用户在本地进行身份验证(通过cookie),它将返回true 。这会使任何Oauth检查都短路。