Я разрабатываю клиент React / Redux с бэкэндом NodeJS / Express.Приложение реагирует на порт 3000, а внутренний сервер - на порт 443.
Это приложение React имеет 3 маршрута реакции-маршрутизатора (SignUp, Login и Home, последний защищен и доступен только для аутентифицированных пользователей).
Когда пользователь входит в систему, приложение React отправляет запрос на сервер с адресом электронной почты и паролем.Сервер ищет пользователя в базе данных mongoDB и возвращает res.cookie
с флагом httpOnly
.
Файл cookie представляет собой jwt с некоторой информацией, например, флагом isAdmin
.Домашний маршрут в клиенте имеет различные параметры, в зависимости от того, является ли пользователь администратором.
Как мой клиент React может безопасно узнать, вошел ли пользователь в систему и является ли пользователь администратором или нет?
Я нашел 2 решения:
- Используйте localStorage / sessionStorage вместо файла cookie httpOnly, но мне сказали, что это очень небезопасно.
- Снимите флаг httpOnly, так что мой клиент может прочитать куки.Я проверил это и отлично работает, но опять-таки меня беспокоит угроза безопасности.
Я чувствую, что что-то упущено в процессе аутентификации.Заранее спасибо и извините за мой плохой английский.