我有一个 Rails APP API 和 Doorkeeper OAuth2 client_credentials。如何在控制器中获取不记名令牌信息?

I have an Rails APP API with Doorkeeper OAuth2 client_credentials. How to get bearer token information within the controller?

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

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

一旦您设置了门卫配置,一个名为 doorkeeper_token 的辅助方法将在您的控制器中可用。 此方法 returns 一个 Doorkeeper::AccessToken 实例,应该具有适当的资源所有者和已发布令牌的应用程序。

如果您使用的是客户端凭据流程,您颁发的令牌将仅包含 application_id 而不会包含 resource_owner_id(因为资源所有者是您的用户)。

要拥有资源所有者,必须由 resource owner password credentials flow 颁发令牌。

至于日志,您可以在 application_controller(或您使用的任何基本控制器)中有一个 before_action,它调用一个方法或只是一个 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

token相关的申请也是如此