2017-11-07 29 views
0

devise_token_authでトークンを作成した後にメソッドを実行する方法はありますか?私が作業しているコードは、生成されたトークンを取り出し、暗号化して別のAPIに格納します。現在のコードは機能しますが、現在のトークンの代わりに生成された最後のトークンのみを取ります。トークンの作成ではなく、セッションの作成後に現在のメソッドが実行されているためです。私は実行するために午前をしようと コード:deviseトークン認証トークンの作成

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 

答えて

0

DeviseTokenAuth::SessionsControllerを通常のDeviseのコントローラのようにイディオムを使用しています。

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

これは方法の流れの中にサブクラス「タップ」をすることができます。あなたは、コードがインライン化されているので、作成の独自の実装を作成する必要がしたい

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 

ないthatsの場合はポイント。

関連する問題