2017-02-09 106 views
3

我在使用Doorkeeper :: TokensController時遇到了問題。
我想之前使用before_action(默認路由問一個訪問令牌(如果它的創建與否,我想記錄也無妨)執行一些代碼是POST /oauth/token/Doorkeeper::TokensController#create如何在Doorkeeper :: TokenController上使用before_action

我通過跟着DOC here執行以下操作:

配置/ routes.rb中

use_doorkeeper do 
    controllers tokens: 'oauth/access_tokens' 
    end 

應用程序/控制器/ access_tokens_controller.rb

class Oauth::AccessTokensController < Doorkeeper::TokensController 
    before_action :log_auth, only: [:create] 

    def log_auth 
    puts "I want to log here" 
    end 
end 

但是,當我做POST /oauth/token,我有以下錯誤消息:

的ActionController :: RoutingError(未定義的方法 'before_action' 的的Oauth :: AccessTokensController:類):
應用程序/控制器/oauth/access_tokens_controller.rb:2:in '類:AccessTokensController'
應用程序/控制器/的OAuth/access_tokens_controller.rb:1:在 '頂部(必需)'

我在做什麼錯?有沒有辦法觸發before_actionDoorkeeper::TokensController上的等效物?

回答

3

我找到了答案,以防萬一有人在這裏張貼需要它:

1 - 看門
首先,門衛是建立在ActionController::Metal(見​​)。這意味着,它不來與所有你可以在「經典」的控制器使用的功能,從ActionController::Base

2繼承 - 添加功能
爲了某些功能添加到我的AccessTokensController我必須包括AbstractController::Callbacks這樣的:

class Oauth::AccessTokensController < Doorkeeper::TokensController 
    include AbstractController::Callbacks 
    before_action :log_auth, only: [:create] 

    def log_auth 
    puts "I want to log here" 
    end 
end 

(感謝this答案)

相關問題