Я реализовал в своем React приложении авторизацию и теперь хочу грамотно реализовать middleware. Например, проверить, авторизовал ли клиент или админ ли этот авторизованный пользователь...
Как это делают?
DRY - Я в каждом компоненте пишу localStorage.getItem('jwtToken'), так нельзя).
это точно серьезный вопрос - не буду претендовать на последнюю истину - сервис авторизации отдельно (внутри рефреш токена и тп или проверка куки с сессией и тп), старт приложения вызывает экшн -> мидлвейр перехватывает действие и ждет данные из сервиса подтверждающие что человек авторизован -> бросает дальше данные или действие типа переход на авторизацию -> действие устанавливает данные в сторе -> ...
не аторизован -> данные формы улетают с экшеном в мидвейр -> дергаем сервис и говорим давай работай -> данные пользователя вылетают дальше в стор
запрос на авторизацию может быть и раньше старта приложения если у вас, например, упоротая система с единой точкой входа и тп.
не авторизован 2 -> вводим данные -> проверяем данные, авторизуем, делаем рефреш страницы или бросаем по урлу
не авторизован возвращается -> ... это уже другая история :) см выше
сервис иногда может выглядеть просто как файл с 3 функциями (setSession, clearSession, isAuthorised) - зато работает и может быть заменен на другие варианты и можно просто тестировать замокав это чудо