如何将自定义标头添加到门卫令牌响应

如何将自定义标头添加到门卫令牌响应

问题描述:

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

原来,它需要一个定义一个自定义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 

接着一个需要登记在配置/初始化/ doorkeeper.rb

# ... 
use_doorkeeper scope: 'oauth2' do 
    # ... 
    controllers tokens: 'access_tokens' 
    # ... 
end 
# ... 
看门配置该控制器