【问题标题】:devise token auth token creation设计令牌认证令牌创建
【发布时间】:2017-11-07 05:22:26
【问题描述】:

在 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

【问题讨论】:

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


    【解决方案1】:

    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 实现,因为代码是内联的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2014-08-16
      • 2013-05-29
      • 1970-01-01
      • 2020-09-25
      • 2017-04-20
      相关资源
      最近更新 更多