Laravel Passport: хранятся ли токены API на сервере и где? - PullRequest
0 голосов
/ 09 мая 2018

Я попытался найти, где токен, возвращенный методом $user->createToken('MyApp')->accessToken;, хранится в базе данных, но не могу его найти.Хранится ли он на сервере в первую очередь?Если да, то где?

Если он не хранится на сервере, потому что он самодостаточен, почему разработчики Laravel включили $table->rememberToken(); в стандартную миграцию create_users_table.php?Какова цель колонки remember_token?

Спасибо за вашу помощь.

Ответы [ 3 ]

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

Нет, значение токена доступа нигде не сохраняется.Если вы потеряете это, оно ушло.Вам нужно будет создать новый токен.

Поле rememeber_token предназначено для функции «Запомнить меня» для обычной веб-аутентификации.Это никак не связано с аутентификацией Passport API.

0 голосов
/ 08 октября 2018

Полагаю, вы могли бы сказать, что некоторая часть токена хранится в базе данных.

Возвращен токен JWT (веб-токен JSON). В нем закодирована информация о токене, как и время его истечения, алгоритм, используемый для его хеширования, области действия токена и его идентификатор (в полезной нагрузке он называется jti). Этот идентификатор хранится в таблице oauth_access_tokens.

В этом методе в классе \Laravel\Passport\PersonalAccessTokenFactory::findAccessToken вы можете увидеть, как Laravel проверяет наличие токена в базе данных:

 /**
 * Get the access token instance for the parsed response.
 *
 * @param  array  $response
 * @return Token
 */
protected function findAccessToken(array $response)
{
    return $this->tokens->find(
        $this->jwt->parse($response['access_token'])->getClaim('jti')
    );
}

Если вы получите действительный токен и вставите его в этого онлайн-инструмента , вы увидите его структуру. Вот как это выглядит:

screenshot of the parsed token

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

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

Помните, что токен в таблице пользователей предназначен для "Запомнить меня", когда вы входите в сеть. Laravel: Что такое «Remember_token» в таблице БД «пользователи»?

Если вы используете паспорт и создаете API, вы можете найти идентификатор токена в oauth_access_tokens в базе данных.

...