0

我正在使用devise_token_auth并且遇到了一个奇怪的场景。

我的数据库中只有一个用户,当我在控制台中询问他的令牌时,我得到了这个:

$ user.tokens

{
    "_5_Mh40SfQvsnkerykJMIw"=>{
        "token"=>"$2a$10$EScwGJLVba9oN1uek0m0bOy6.nyRq9q6yFO25nKbiPCOslUEwBrFi",
        "expiry"=>1527942239,
        "last_token"=>nil,
        "updated_at"=>"2018-05-19T14:23:59.127+02:00"
    }
}

所以现在我想要一个新的令牌,所以我执行以下命令:

$ user.create_new_auth_token

这是对那个电话的回应

"access-token"=>"Uof0cB0KcI5RH-GFOCezDw",
"token-type"=>"Bearer",
"client"=>"J_Bb35u9pcBCUSLuzP8axA",
"expiry"=>"1527942277",
"uid"=>"eddie@me.com"

哪个应该是新的令牌,对吧?所以我再次检查用户的令牌:

$ user.tokens

{
    "_5_Mh40SfQvsnkerykJMIw"=>{
        "token"=>"$2a$10$EScwGJLVba9oN1uek0m0bOy6.nyRq9q6yFO25nKbiPCOslUEwBrFi",
        "expiry"=>1527942239,
        "last_token"=>nil,
        "updated_at"=>"2018-05-19T14:23:59.127+02:00"
    },
    "J_Bb35u9pcBCUSLuzP8axA"=>{
        "token"=>"$2a$10$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12",
        "expiry"=>1527942277,
        "last_token"=>nil,
        "updated_at"=>"2018-05-19T14:24:37.637+02:00"
    }
}

现在,你看到问题了吗?新客户端J_Bb35u9pcBCUSLuzP8axA匹配但access-token我在创建新令牌时收到的 ( ) 与存储在数据库中的 ( )Uof0cB0KcI5RH-GFOCezDw不匹配$2a$10$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12

这是为什么?我认为创建新令牌时的响应将是同一个令牌。是什么access-token意思?它是干什么用的?

4

1 回答 1

1

这是为什么?我认为创建新令牌时的响应将是同一个令牌。

发生这种情况是因为它access-token被加密保存在数据库中,如此所述。

访问令牌是什么意思?它是干什么用的?

它是一个令牌,用作每个请求的客户端访问标识(如密码),因此不应将其存储为纯文本。

于 2018-05-22T19:24:00.343 回答