# #reactjs #firebase #authentication #firebase-authentication #react-context
#реагирует на #огневая база #идентификация #firebase-аутентификация #реагировать-контекст
Вопрос:
Я создаю приложение REACT Firebase CRUD с первоначальным маршрутом входа в систему и некоторыми другими частными маршрутами, связанными с функциями CRUD, доступными только для аутентифицированных и авторизованных пользователей.
Для входа в систему я использую метод Firebase signInWithEmailAndPassword, предоставляя логин пароль в качестве входных данных и получая токен аутентификации в качестве возврата.
После этого я храню этот токен в своем локальном хранилище. Всякий раз, когда вызывается частный маршрут, вызывается проверка подлинности токена следующим образом:
//Private Route component const RoutesPrivate = ({ component: Component, ...rest}) =gt; { //Get token from 'StoreContext' context to validate user session const { userToken } = useContext(UserTokenContext); //Check Token validity before redirecting to private route return ( lt;Route {...rest} render={() =gt; validateToken(userToken) ? lt;Component {...rest} /gt; : lt;Redirect to="/login" /gt; } /gt; ) }
Таким образом, метод validateToken(UserToken) вызывает определенный внутренний маршрут для проверки действительности токена. Если токен действителен и актуален, он возвращает значение TRUE и разрешает загрузку Частного маршрута. Если нет, он возвращает значение FALSE.
Вопрос в том, безопасен ли этот подход? Если нет, то как я должен это изменить? Какой подход принять?
Другая важная вещь заключается в том, что все операции CRUD на Частных маршрутах через внутренний сервер (администратор Firebase) снова проверяются с использованием сохраненного токена, поэтому, даже если злоумышленнику удастся попасть на частный маршрут без токена (каким-то образом минуя условие validateToken), он не сможет загрузить какие — либо данные или отправить что-либо (все запросы проверяют токен, прежде чем что-либо делать-ПОЛУЧИТЬ, ОПУБЛИКОВАТЬ, ПОМЕСТИТЬ). Маркер используется как для разрешения доступа к частному маршруту на первом этапе, так и для последующей проверки любого запроса REST внутри частной зоны.
Спасибо за поддержку и извините за недостаток знаний — все еще развиваюсь в этой части, готов выбрать лучший подход.
Комментарии:
1. Я не уверен, что это идеально с точки зрения безопасности, но я использую то же самое, что и вы.
2. Да, на самом деле я не знаю, является ли это лучшим подходом, но, по крайней мере, кажется разумным. Поскольку я только начинаю проект, есть время измениться, если есть лучшие способы сделать это. Жду какой-нибудь опытной обратной связи, чтобы добавить ее к этому обсуждению.