Rails 5.2 Auth - create_new_auth_token 后返回的令牌
Rails 5.2 Auth - Token returned after create_new_auth_token
我正在使用 devise_token_auth,我遇到了一个奇怪的场景。
我的数据库中只有一个用户,当我在控制台中询问他的令牌时,我得到了这个:
$ user.tokens
{
"_5_Mh40SfQvsnkerykJMIw"=>{
"token"=>"a$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"=>"a$EScwGJLVba9oN1uek0m0bOy6.nyRq9q6yFO25nKbiPCOslUEwBrFi",
"expiry"=>1527942239,
"last_token"=>nil,
"updated_at"=>"2018-05-19T14:23:59.127+02:00"
},
"J_Bb35u9pcBCUSLuzP8axA"=>{
"token"=>"a$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12",
"expiry"=>1527942277,
"last_token"=>nil,
"updated_at"=>"2018-05-19T14:24:37.637+02:00"
}
}
现在,你看到问题了吗?新客户端 J_Bb35u9pcBCUSLuzP8axA
匹配,但我在创建新令牌 (Uof0cB0KcI5RH-GFOCezDw
) 时收到的 access-token
与数据库中存储的令牌 (a$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12
)
这是为什么?我认为在创建新令牌时,响应会
是同一个标记。 access-token
是什么意思?它有什么用?
Why is that? I thought that the response, when creating a new token, would be that same token.
发生这种情况是因为 access-token
以加密方式保存在数据库中,如 here 所述。
What does the access-token mean? What is it for?
它是一个令牌,作为客户端每次请求的访问标识(类似密码),因此不应以纯文本形式存储。
我正在使用 devise_token_auth,我遇到了一个奇怪的场景。
我的数据库中只有一个用户,当我在控制台中询问他的令牌时,我得到了这个:
$ user.tokens
{
"_5_Mh40SfQvsnkerykJMIw"=>{
"token"=>"a$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"=>"a$EScwGJLVba9oN1uek0m0bOy6.nyRq9q6yFO25nKbiPCOslUEwBrFi",
"expiry"=>1527942239,
"last_token"=>nil,
"updated_at"=>"2018-05-19T14:23:59.127+02:00"
},
"J_Bb35u9pcBCUSLuzP8axA"=>{
"token"=>"a$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12",
"expiry"=>1527942277,
"last_token"=>nil,
"updated_at"=>"2018-05-19T14:24:37.637+02:00"
}
}
现在,你看到问题了吗?新客户端 J_Bb35u9pcBCUSLuzP8axA
匹配,但我在创建新令牌 (Uof0cB0KcI5RH-GFOCezDw
) 时收到的 access-token
与数据库中存储的令牌 (a$trmOQQOnQRfMXGk0s8XS5ufUl9OHDnPcK7f4M4qXfGggj4gCUIc12
)
这是为什么?我认为在创建新令牌时,响应会
是同一个标记。 access-token
是什么意思?它有什么用?
Why is that? I thought that the response, when creating a new token, would be that same token.
发生这种情况是因为 access-token
以加密方式保存在数据库中,如 here 所述。
What does the access-token mean? What is it for?
它是一个令牌,作为客户端每次请求的访问标识(类似密码),因此不应以纯文本形式存储。