如何向门禁令牌响应添加自定义标头

时间:2017-07-25 11:11:20

标签: ruby-on-rails oauth-2.0 doorkeeper

我正在处理的项目要求我根据生成的响应正文将自定义标题添加到我的应用生成的所有响应中。这适用于我的应用程序控制器中的after_action,但我还需要将自定义标头添加到使用Doorkeeper生成的令牌响应中。我在门卫配置中将base_controller设置为ApplicationController,但这并没有导致我的after_actions被调用。是否有一些可行的解决方法?

1 个答案:

答案 0 :(得分:1)

事实证明,定义一个自定义的Doorkeeper :: TokensController类并为其添加一个过滤器需要一个。

应用程序/控制器/ access_tokens_controller.rb:

class AccessTokensController < Doorkeeper::TokensController
  include AbstractController::Callbacks
  after_action :add_signature_to_response, only: [:create]

  def add_signature_to_response
    application = strategy.client.application
    # ...
    # response_based_on_application = ...
    # ... 
    response.headers['custom-header'] = response_based_on_application
  end
end

接下来需要在config / initializers / doorkeeper.rb

中的门卫配置中注册该控制器
# ...
use_doorkeeper scope: 'oauth2' do
  # ...
  controllers tokens: 'access_tokens'
  # ...
end
# ...