dzheka3d
@dzheka3d

Как обнулить токен при выходе пользователя?

Всем привет! Пытаюсь реализовать авторизацию для API с использованием JWT (библиотека JWT).
Выходит такая логика:

Пользователь вводит логин и пароль на стороне клиента (приложение android).
Они прилетают на сервер и если логин и пароль совпадают - выполняется вот этот код:
$token = (new Lcobucci\JWT\Builder())	
                        ->setExpiration(time() + 3600000) // Время жизни токена
                        ->set('user_id', 1453535345) // в токене храним ID юзера
			->sign($signer, 'testing') // ключ подписи
                        ->getToken();
echo (string) $token; // отправляем токен пользователю

Этот токен приложение отправляет при каждом запросе к серверу и в самом начале любого кода токен проверяется вот так:
$token = (new Lcobucci\JWT\Parser())->parse((string) $_GET['token']); // парсим полученый токен
$data = new Lcobucci\JWT\ValidationData();

if($token->validate($data) && $token->verify($signer, 'testing')){
$_SESSION['user_id'] = $token->getClaim('user_id');
}

И дальше мы уверены, что этот user_id верный, так как подпись токена проверена. А значит мы везде будем использовать $_SESSION['user_id'] для получения данных, касающиеся данного пользователя.

Но как быть если пользователь решит выйти из профиля? Мы ведь не храним данные в базе о актуальности токена и после нажатия на кнопку выйти, что нужно "убивать"?
Ведь токен-то останется у пользователя и также при отправке его на сервер, будет определяться все тот же user_id.
  • Вопрос задан
  • 599 просмотров
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks
Возможно, генерация нового токена убьёт старый. Если только это не один и тот же.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы