我有一个正在尝试与android app同步的rails app。我已经成功地设置了authentication,使用Doorkeeper作为服务器,Oltu作为客户端。
我的应用程序跟踪存在于每个用户列表中的习惯。我在习惯控制器中的索引方法是:
def index
@habits = current_user.habits
end
通过Devise进行身份验证时,此方法有效,使用Doorkeeper时,current_user
为nil
。
发布于 2014-09-08 17:10:53
经过身份验证的资源所有者
如果您希望根据当前资源所有者(即访问令牌所有者)返回数据,则可能需要在控制器中定义一个返回资源所有者实例的方法:
class Api::V1::CredentialsController < Api::V1::ApiController
before_action :doorkeeper_authorize!
respond_to :json
# GET /me.json
def me
respond_with current_resource_owner
end
private
# Find the user that owns the access token
def current_resource_owner
User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end
end
在本例中,我们将返回访问令牌所有者的凭据(me.json
)。
发布于 2014-01-31 23:11:56
我会覆盖你的基础应用程序接口控制器中的current_user,类似于:
private
def current_user
@current_user ||= User.find(doorkeeper_token[:resource_owner_id])
end
发布于 2018-06-10 00:53:05
我有一个API,需要允许通过Doorkeeper或Devise进行身份验证。下面的解决方案允许主应用程序使用与Oauth客户端相同的端点,并共享current_user方法。
before_action :doorkeeper_authorize!, unless: :user_signed_in?
def current_user
@current_user ||= if doorkeeper_token
User.find(doorkeeper_token.resource_owner_id)
else
warden.authenticate(scope: :user)
end
end
https://stackoverflow.com/questions/20766357
复制相似问题