设计令牌身份令牌创建

时间:2017-11-07 05:22:26

标签: ruby-on-rails devise token ruby-on-rails-5

在devise_token_auth中创建令牌后有没有办法执行方法?我正在使用的代码获取生成的令牌,加密它并将其存储在另一个api中。当前代码有效,但它只生成最后一个令牌而不是当前令牌。由于当前方法在会话创建后执行而不是令牌创建。 我尝试执行的代码:

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

1 个答案:

答案 0 :(得分: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

如果那不是您想要的,那么您需要创建自己的create实现,因为代码是内联的。