我正在使用 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)
也无法解码令牌。