首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Doorkeeper身份验证会话访问current_user

如何从Doorkeeper身份验证会话访问current_user
EN

Stack Overflow用户
提问于 2013-12-25 04:19:15
回答 4查看 8.3K关注 0票数 12

我有一个正在尝试与android app同步的rails app。我已经成功地设置了authentication,使用Doorkeeper作为服务器,Oltu作为客户端。

我的应用程序跟踪存在于每个用户列表中的习惯。我在习惯控制器中的索引方法是:

代码语言:javascript
复制
def index
  @habits = current_user.habits
end

通过Devise进行身份验证时,此方法有效,使用Doorkeeper时,current_usernil

EN

回答 4

Stack Overflow用户

发布于 2014-09-08 17:10:53

来自Doorkeeper's README的。

经过身份验证的资源所有者

如果您希望根据当前资源所有者(即访问令牌所有者)返回数据,则可能需要在控制器中定义一个返回资源所有者实例的方法:

代码语言:javascript
复制
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)。

票数 9
EN

Stack Overflow用户

发布于 2014-01-31 23:11:56

我会覆盖你的基础应用程序接口控制器中的current_user,类似于:

代码语言:javascript
复制
private

def current_user
  @current_user ||= User.find(doorkeeper_token[:resource_owner_id])
end
票数 8
EN

Stack Overflow用户

发布于 2018-06-10 00:53:05

我有一个API,需要允许通过Doorkeeper或Devise进行身份验证。下面的解决方案允许主应用程序使用与Oauth客户端相同的端点,并共享current_user方法。

代码语言:javascript
复制
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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20766357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档