【发布时间】:2018-02-04 18:56:52
【问题描述】:
我想使用 localstorage 来保持身份验证状态,以避免刷新时页面内容变慢。我在其他地方读过这个,但不确定如何在我的情况下实施。谁能帮我弄清楚如何编辑以下内容以使其正常工作?
这个例子很相似,但我不知道如何将它应用到我的案例中。
import React from 'react';
import { firebase } from '../firebase';
import PropTypes from 'prop-types';
const withAuthentication = (Component) => {
class WithAuthentication extends React.Component {
constructor(props) {
super(props);
this.state = {
authUser: null,
};
}
getChildContext() {
return {
authUser: this.state.authUser,
};
}
componentDidMount() {
firebase.auth.onAuthStateChanged(authUser => {
authUser
? this.setState(() => ({ authUser }))
: this.setState(() => ({ authUser: null }));
});
}
render() {
return (
<Component />
);
}
}
WithAuthentication.childContextTypes = {
authUser: PropTypes.object,
};
return WithAuthentication;
}
export default withAuthentication;
【问题讨论】:
-
除了使用本地存储,您还可以将用户的状态存储在您的最高级别组件(如路由器)中。然后你可以使用上下文将它传递给你想要的任何组件。
-
嗨,谢谢。所以我认为这个 withAuthentication.js 是我最高级别的组件。一旦页面被加载并且我四处导航就很好了。但是当我刷新页面时,需要一秒钟才能确定用户是否登录......我希望这有意义吗?
-
请不要依赖破解 localStorage。我可以 100% 保证 Firebase Auth 将迁移到 indexedDB。
-
您不应诉诸这些与内部实施相关的黑客行为,因为 Firebase 身份验证团队保留更改其内部结构的权利。
-
你会推荐什么来代替 bojeil?
标签: reactjs firebase firebase-authentication