我正在使用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
匹配<{1}}
为什么?我认为在创建新令牌时的响应会
同样的道理。 access-token
是什么意思?它的用途是什么?
答案 0 :(得分:1)
为什么?我认为在创建新令牌时,响应将是同一个令牌。
这是因为access-token
已在DB中加密保存,如here所述。
访问令牌是什么意思?它的用途是什么?
它是一个令牌,用作每个请求的客户端访问标识(如密码),因此不应将其存储为纯文本。