Каков наилучший, самый безопасный и профессиональный способ сохранить токен jwt пользователя после входа в React?
Я вижу, что многие люди говорят, что использование localStorage — это хороший способ.
Например:
localStorage.setItem("token", "ey.......")
Другие советуют использовать библиотеку вроде Redux или других.
Может ли кто-нибудь посоветовать мне?
Спасибо
Не храните конфиденциальную информацию в токене jwt, в идеале храните некоторый идентификатор и храните токен доступа в некотором контексте и храните токены обновления поставщиками удостоверений на сервере и отправляйте пользователю некоторый зашифрованный токен на месте в исходный токен обновления для хранения на клиенте.
Redux не имеет встроенного постоянного хранилища. Это означает, что при обновлении страницы ваш ключ может быть утерян, и вам необходимо повторно войти в систему (авторизоваться) еще раз. Нет "правильного" пути, есть "желаемое поведение".
Как вам уже было предложено в комментариях, вы также можете использовать куки в качестве хранилища ключа, и я думаю, что это один из наиболее предпочтительных способов на данный момент, так как это довольно безопасное решение.
Redux имеет промежуточное ПО для сохранения своего состояния. Там вы можете выбрать, какое хранилище вы хотите использовать в качестве долговременного хранилища.
Но я бы не рекомендовал вам добавлять редукцию в проект только для того, чтобы она была.
И есть хороший ответ о разнице между самыми популярными браузерными хранилищами.
Внимательно прочитайте и выбирайте разумно, между ними есть некоторые существенные различия, такие как область действия и безопасность.
Спасибо за этот конструктивный ответ. +1
Хотя хранить данные в localStorage
— не самый плохой выбор. На мой взгляд, самым лучшим, безопасным и профессиональным способом будет следовать руководству OWASP.
Они предлагают использовать sessionStorage
с отпечатком пальца браузера в качестве меры предосторожности вместе с CSP.
сохранить его в файле cookie