Rails 5.2 Auth - токен возвращается после create_new_auth_token - PullRequest
0 голосов
/ 19 мая 2018

Я использую 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?Для чего это?

1 Ответ

0 голосов
/ 22 мая 2018

Почему это?Я думал, что ответом при создании нового токена будет тот же самый токен.

Это происходит потому, что access-token сохраняется в зашифрованном виде в БД, как объяснено здесь .

Что означает токен доступа?Для чего он нужен?

Это токен, который служит идентификатором доступа клиента (например, пароль) для каждого запроса, поэтому он не должен храниться в виде простого текста.

...