使用Knock成功创建和接收JWT后,未经授权的响应

时间:2019-01-07 01:34:31

标签: jwt ruby-on-rails-5

当我点击user_token控制器时,我可以成功生成令牌。然后将其发送给我的客户端,我可以在Chrome控制台的“应用程序”标签中进行验证。但是,当我尝试通过身份验证的请求时,我得到:

Filter chain halted as :authenticate_user rendered or redirected 

我可以验证Authorization标头是随请求一起发送的(它具有Bearer键和JWT作为值),因此看来Knock不喜欢我创建的令牌。在Knock文档中并没有真正提到令牌的创建。我使用JWT gem文档来学习如何做,但是我想我可能会缺少一些东西。如果有人可以看看,将不胜感激。这是我的创建方式:

# controllers/user_token_controller.rb

class UserTokenController < Knock::AuthTokenController
  def create
    user = User.find_by_email(user_token_params[:email])

    if user&.authenticate(user_token_params[:password])
      token = JWT.encode(user_token_params, ENV["SECRET_KEY_BASE"], "HS256")
      render json: {token: token}
    else
      render json: {error: "invalid email or password."}
    end
  end

  private

  def user_token_params
    params.require(:auth).permit(:email, :password)
  end
end

0 个答案:

没有答案