2017-11-07 1 views
0

Gibt es eine Möglichkeit, eine Methode nach der Token-Erstellung in devise_token_auth auszuführen? Der Code, mit dem ich arbeite, nimmt das erzeugte Token, verschlüsselt es und speichert es in einer anderen API. Der aktuelle Code funktioniert, aber nur das letzte Token, das anstelle des aktuellen Tokens generiert wurde. Die aktuelle Methode wird nach der Erstellung der Sitzung anstelle der Token-Erstellung ausgeführt. Der Code, den ich versucht bin auszuführen:Entwicklung Token Auth Token Erstellung

class SessionsController < DeviseTokenAuth::SessionsController 
    require "uri" 
    require "net/http" 

    after_action :authorization, only: [:create] 

    def authorization 
    token = request.headers["access-token"] 
    encrypted_token = Digest::SHA256.hexdigest(token) 
    client = request.headers["client"] 
    params = { "token": encrypted_token, "client": client } 

    Net::HTTP.post_form(URI.parse("http://localhost:3001/api_keys"), params) 
    puts params 
    puts "AUTHORIZATION" 
    end 
end 

Antwort

0

DeviseTokenAuth::SessionsController wie die normalen Devise Controller verwendet das Idiom:

module DeviseTokenAuth 
    class SessionsController < DeviseTokenAuth::ApplicationController 
    # ... 
    def create 
     # ... 
     yield @resource if block_given? 
    end 
    end 
end 

Auf diese Weise können Unterklassen "tap" in den Ablauf des Verfahrens.

class SessionsController < DeviseTokenAuth::SessionsController 
    def create 
    super do |resource| 
     # this is executed after the resource is saved but before the response is sent. 
    end 
    end 
end 

Wenn das nicht der Punkt ist, den Sie möchten, müssen Sie eine eigene Implementierung von create erstellen, da der Code inline ist.