2017-11-07 4 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는 관용구를 사용

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 

원하는 부분이 아니라면 코드가 인라인 된 이후에 직접 만든 구현을 만들어야합니다.