如何从经过身份验证的DoorAdministrator会话中访问Current_USER

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有一个rails应用程序,我试图与Android应用程序同步。我使用Doorkeeper作为服务器并使用Oltu作为客户端成功设置了身份验证

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

def index
  @habits = current_user.habits
end

当通过设计验证这种方法的工作原理,使用时,看门current_usernil

提问于
用户回答回答于

我不知道这是否是正确的方法,但解决方案是:

def index
  user = current_user
  user ||= User.find(doorkeeper_token[:resource_owner_id]) if doorkeeper_token
  @habits = user.habits
end

您无法分配current_user或将其设置为nil

用户回答回答于

来自门卫的自述文件 ......

已验证的资源所有者

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

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访问令牌所有者的credentials()。

扫码关注云+社区

领取腾讯云代金券