【发布时间】:2020-05-18 02:04:39
【问题描述】:
我正在尝试保护我的所有路线以做出反应,因为我正在尝试一种逻辑,但它并没有按照我想要的方式工作。
我正在使用 app.js 文件,因为我有路由文件。我正在使用功能组件。
我在 app.js 中的代码是:
export default function App(props) {
useEffect(() => {
}, []);
var logged = null
var user = firebase.auth().currentUser;
if (user) {
logged = true
console.log("user exist", user);
} else {
logged = false
console.log("user don't exist", logged);
}
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props =>
//fakeAuth.isAuthenticated === true ? (
logged === true ? (
<Component {...props} />
) : (
<Redirect to="/signIn" />
)
}
/>
);
<PrivateRoute path="/features" component={FeaturePage} />
}
此代码工作正常,但当我刷新页面或尝试从浏览器转到 URL 时,它无法正常工作。
当我尝试添加逻辑时:
var logged = null
useEffect(() => {
// CLEAN UP
var user = firebase.auth().currentUser;
if (user) {
logged = true
console.log("user exist", user);
} else {
logged = false
console.log("user don't exist", logged);
}
return () => {
document.querySelector('.first-row').style.position = '';
};
}, []);
它不起作用我的问题是如何创建我的 app.js 文件,如果用户每次从浏览器或任何方式打开路由,则检查用户是否登录。它应该知道它是否已登录。
Firebase 请提供一些示例,否则我们将不胜感激。
【问题讨论】:
标签: javascript reactjs firebase firebase-authentication