antonov22
@antonov22
PHP - программист.

Стоит ли создавать разные таблицы для хранения JWT (веб и API для мобильного приложения)?

Создаю бэкенд, в котором есть и веб часть и API для мобильного приложения (авторизация в разных частях идет через разные таблицы ). Фронт на реакте. Авторизация с фронта по JWT.
структура таблицы токенов:
id
token string(50)
user_id int()
Схема такова:
1. Юзер логинится, я генерю токены (Id от refreshToken записываю в базу) сажаю в LocalStorage JWT (accessToken и refreshToken)
2. Аутентификация запросов по accessToken до тех пор пока не истечет время.
3. После того как accessToken протух идет запрос по refreshToken на контроллер обновление токенов.
4. При обновлении, ищу по id юзера из токена в базе, если id токена из базы совпадает с id токена из запроса обновляю токены отправляю ответом (accessToken и refreshToken), если нет, то логают и редирект на страницу автрозации.

Так же на сервере есть демон, который подчищает из базы протухшие токены.

Теперь возникла потребность сделать тоже, для API мобильного приложения. Отличия только в данных передаваемых токене.

Итак вопрос. Есть ли смысл создавать отдельную таблицу для хранения токенов с мобильного приложения или сделать все в одной таблице? Добавить помимо user_id поле system_id? Или искать по токену(тогда user_id вообще не нужен)?
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 2
hOtRush
@hOtRush
Это новая фишка у jwt - рефреш токены? Можно ссылку где почитать?

Не понимаю зачем хранить в базе токены? Зачем нужны вообще рефреш токены. На заре jwt все делалось намного проще, клиент с каждым запросом шлет jwt токен любым удобным для него способом, сервер смотрит что токен скоро протухнет, генерирует новый токен и отправляет назад вместе с ответом, например в том же Authorization заголовке, клиент видит новый токен и заменяет им старый. Если токен все-таки протух - логин.
Ответ написан
Ваш ответ на вопрос

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

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