В настоящее время я работаю над проектом с Firebase Integration и React. Я могу зарегистрироваться и войти в систему, но я хочу, чтобы у некоторого Guard был доступ к «подключенным» страницам, когда я подключен, или для перенаправления на страницу по умолчанию для отключенного состояния, если я не подключен.
Я кодировал следующее для наличия различных маршрутов и установил его в файле App.tsx:
const ConnectedRoute: React.FC<RouteProps> = ({ component, ...rest }) => {
var route = <Route />
var connected = isConnected()
console.log(connected)
if (connected){
route = <Route {...rest} component={component}/>
}
else{
route = <Route {...rest} render={() => <Redirect to ="/welcome" />} />
}
return route
}
const UnconnectedRoute: React.FC<RouteProps> = ({ component, ...rest }) => {
var route = <Route />
var connected = isConnected()
console.log(connected)
if (connected){
route = <Route {...rest} render={() => <Redirect to ="/home" />} />
}
else{
route = <Route {...rest} component={component}/>
}
return route
}
const App: React.FC = () => {
return (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route exact path="/" render={() => <Redirect to="/welcome" />} />
<UnconnectedRoute path="/welcome" component={UnconnectedHome} exact />
<ConnectedRoute path="/home" component={ConnectedHome} exact />
<UnconnectedRoute path="/login" component={Login} exact />
<UnconnectedRoute path="/register" component={Register} exact />
<ConnectedRoute path="/events/create" component={CreateEvent} exact />
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
)
};
И для инициализации firebase я сделал следующее:
export async function initializeApp(){
console.log("Checking if app is initialized...")
if (firebase.apps.length == 0){
console.log("App initializing...")
firebase.initializeApp(firebaseConfig);
await firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
}
}
И функция, позволяющая узнать, подключен ли пользователь (например, повар ie):
export function isConnected(){
const res = firebase.auth().currentUser
console.log(res)
return res !== null
}
Тем не менее, когда я перезагружаю вкладку, она всегда возвращает мне FALSE !
Итак, мне было интересно, как я мог запустить сервер Firebase перед запуском приложения? Это текущая проблема? В настоящее время я понятия не имею об этом, и это меня очень расстраивает ...
Если вы уже сталкивались с такой проблемой, это действительно помогло бы мне!
Спасибо!