Приложение React с аутентификацией Firebase через localStorage

# #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. Да, на самом деле я не знаю, является ли это лучшим подходом, но, по крайней мере, кажется разумным. Поскольку я только начинаю проект, есть время измениться, если есть лучшие способы сделать это. Жду какой-нибудь опытной обратной связи, чтобы добавить ее к этому обсуждению.