Вопрос о реализации авторизации на React + Redux. Какие данные мы должны хранить в localStorage и в state redux?
Привет!
При удачной аутентификации, мы получаем токен (access token). Мы сохраняем его в localStorage.
В моем случае, я так же отправляю expires in, сохраняю в localStorage. При загрузке приложения, проверяю не истек ли срок токена. Так проще. Так как на бэкенде я использую LARAVEL с PASSPORT (OAuth), я пока не совсем понимаю все прелести OAuth.
REDUX
В туториалах люди диспатчат из JWT (У нас не JWT) в объект user пользовательские данные. Вопрос.. зачем? Так ли это нужно?
Нужно ли хранить пользовательские данные в localStorage? Я не вижу в этом логического смысла.
Расскажите, пожалуйста, какие данные мы должны сохранить у клиента, какие dispath`ить и как должен выглядеть на reducer (редуктор) в связке LARAVEL PASSPORT (OAuth), React js и REDUX?
Redux state используется для контроля состояния SPA приложения, хранить персональные данные в редакс стейт не является best practices, для этого используется session storage или реже local storage, хотя выбор в пользу последнего тоже имеет ограничения, токен лучше всего держать в сессионом хранилище оно лучше всего подходит, так как в SPA приложение на бекенде используется rest api или graph ql, токен должен регулярно передаваться в теле любого обращения к серверу и желательно на стороне фронтенда реализовать проверку времени его действия и его регулярное обновление.
Что касается, "диспатчить из jwt" - каким это образом и что это вообще такое? Всё процессы связанные с генерацией токена происходят на бекенде на выходе только json и стринга в хранилище, это все что должно быть на фронте.
Редьюсер - это метод обновление стейта приложения. Здесь мы можем выполнять асинхронный код, запросы к серверу а полученные данные необходимые для работы приложения кидать в стейт. В редьюсере обращаемся к серверу полученный токен и дату сохраняем в сессионом или локальном хранилище.