首页 > 解决方案 > 我有一个带有 Doorkeeper OAuth2 client_credentials 的 Rails APP API。如何在控制器内获取不记名令牌信息?

问题描述

我有一个带有 Doorkeeper OAuth2 client_credentials 的 Rails APP API。我想在控制器中获取令牌信息并获取使用不记名令牌的用户的 uid 并将 logger.info 发送到日志。寻求您的建议/想法

标签: ruby-on-railsoauth-2.0ruby-on-rails-5doorkeeper

解决方案


我不确定我是否正确理解了您的问题,但我会在这里尽力而为。

设置门卫配置doorkeeper_token后,控制器中将提供一个调用的辅助方法。此方法返回一个Doorkeeper::AccessToken实例,并且应该具有适当的资源所有者和已发行令牌的应用程序。

如果您使用的是客户端凭证流,您颁发的令牌将只包含一个application_id但不包含resource_owner_id(因为资源所有者是您的用户)。

要拥有资源所有者,必须由资源所有者密码凭证流颁发令牌。

至于日志,您可以before_action在 application_controller(或您使用的任何基本控制器)中有一个调用方法或简单的 proc 来记录令牌信息:

before_action :log_token_info

def log_token_info
  # log user name or whatever attribute you wish
  # for the user id you can simply access the doorkeeper.resource_owner_id
  logger.info "Token resource owner: #{doorkeeper.resource_owner.name}"
end

与令牌相关的应用程序也是如此


推荐阅读