'ArgumentError: invalid base64' when decoding tokens with devise_token_auth

问题描述 投票:0回答:0

我正在使用 gems

devise_token_auth' and 
graphql_devise` 进行身份验证,我能够生成令牌。这是我刚刚与客户和到期日一起生成的示例:

#<struct DeviseTokenAuth::TokenFactory::Token
 client="TeoomlVVA0xMCNKff4Q3Fw",
 token="DOXnJR8iPlwHgXHUYJXi6w",
 token_hash="$2a$10$PdliAqqiGXyp1ARfTQzYEeQMKxSF7X1peXgyDLRBz44cKXlI1zh1W",

然后,当我尝试使用它进行身份验证时,它无法解码从调用

ArgumentError: invalid base64
set_user_by_token
方法的 devise_token_auth gem 内部提升
decode_bearer_token
的令牌。该方法接收我的令牌并在此行返回 {}:
JSON.parse(Base64.strict_decode64(encoded_token)) rescue {}
。令牌存在但是当我只运行
Base64.strict_decode64(encoded_token)
时,它会引发错误
ArgumentError: invalid base64
.

我正在使用 Rails 版本:7.0.4.3 红宝石版本:红宝石 3.2.2

令牌本身是在

user.rb
create_token
中的同一 gem 中登录期间生成的,在这一行中:
token = DeviseTokenAuth::TokenFactory.create(client: client, lifespan: lifespan, cost: cost)
所有参数均为
nil
。令牌被返回,随后这个输出通过
devise_token_auth
graphql_devise
的其余管道返回到前端:

tokens[token.client] = {
        token:  token.token_hash,
        expiry: token.expiry
      }.merge!(token_extras)

即使在这个时候,如果我尝试调用

Base64.strict_decode64(encoded_token)
也无法解码令牌。

ruby-on-rails authentication bearer-token devise-token-auth
© www.soinside.com 2019 - 2024. All rights reserved.