2017-02-09 1 views
3

Ich habe Probleme mit Doorkeeper :: TokensController.
Ich möchte einige Code auszuführen, bevor ein Zugriffstoken für gefragt wird (wenn es oder nicht erstellt wird, möchte ich es trotzdem log) eine before_action (Standardroute verwendet, ist POST /oauth/token/Doorkeeper::TokensController#create.So verwenden Sie before_action auf Doorkeeper :: TokenController

ich den doc gefolgt here von Sie folgendermaßen vorgehen:

config/routes.rb

use_doorkeeper do 
    controllers tokens: 'oauth/access_tokens' 
    end 

app/controllers/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 

Aber wenn ich POST /oauth/token tun, habe ich die folgende Fehlermeldung:

Action :: RoutingError (nicht definierte Methode 'before_action' für Oauth :: AccessTokensController: Class):
app/controllers /oauth/access_tokens_controller.rb:2:in 'Klasse: AccessTokensController'
app/Controller/oauth/access_tokens_controller.rb: 1: in 'top (erforderlich)'

Was mache ich falsch? Gibt es eine Möglichkeit, eine before_action oder gleichwertig auf Doorkeeper::TokensController auszulösen?

Antwort

3

fand ich die Antwort, es hier nur für den Fall jemand Entsendung braucht es:

1 -
allererst Pförtner, Hausmeister auf ActionController::Metal (siehe here) gebaut wird. Es bedeutet, dass es nicht mit allen Funktionen kommt, die Sie in einem „klassischen“ Controller von ActionController::Base

2 vererben können - Hinzufügen von Funktionen
Um einige Funktionen meines AccessTokensController hinzufügen musste ich schließen AbstractController::Callbacks wie folgt aus:

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 

(dank this Antwort)

Verwandte Themen