Как правильно сделать аутентификацию с Vue, Nuxt, JWT, Node.js, Axios?

В данный момент схема следующая, после успешного логина и пароля, пользователь получает токен и рефреш токен. Время жизни токена 5 минут. Их я сохраняю в редис причем по ключу рефреш токена храню ключ аксес токена. После того , как время жизни токена прошло, я удаляю его из редис и отправляю клиенту ошибку с информацией, что логин не действительный. В обработчике ошибок для axios, я dispatc'у action, на роут получения нового токена с рефреш токеном.
Обновляю запись рефреш токена в редис. После блокировки пользователя, так как рефреш токен я храню в БД, то его токен удаляю из редис и также удаляю его активный токен. В итоге пользователь заблокирован.

Вопросы:
1) Правильно ли хранить рефреш токен в бд ?
2) Если, я храню на клиенте токен и рефреш токен, то как мне правильно защититься от взлома ?
3) Верификацию токена. я делаю в middleware. Нужно ли вообще выбрасывать ошибку для axios для запроса или можно кидать два токена в body и делать это сразу ?
4) Нужно ли вообще хранить на клиенте, рефреш токен. Если его можно хранить в редисе по ключу от активного токена ?

PS.
4 вариант отпадает.
  • Вопрос задан
  • 1141 просмотр
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Правильно так, как тебе удобно. На сервере хоть в файле храни, хоть в бд, хоть в сессии. На клиенте куки, localStorage. Передавать его можешь параметром url, через куки, через http заголовки.
Ответ написан
Ваш ответ на вопрос

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

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