3 回答
TA贡献1836条经验 获得超3个赞
对于这种需要状态持续很长时间而不是刷新的情况,我建议使用LocalStorage它,因为它可以在浏览器中持续存在而没有问题,以下是您可以使用它的方法:
export class Layout extends Component {
//definimos las variables necesarias
state = { isLogged: false, usuarioLogado: any };
//funcion donde establecemos los valores de las variables
DoLogin = (logged, usuario) => {
localStorage.setItem('isLogged', true);
this.setState({ isLogged: localStorage.getItem('isLogged'), usuarioLogado: usuario});
};
render() {
const { changeLanguage, children, headerTitle, labelData, textos, valor } = this.props;
const { isLogged, usuarioLogado } = tihs.state;
if (isLogged) {
return <div>
<NavMenu headerTitle={headerTitle} textos={textos} valor={valor} changeLanguage={changeLanguage} usuario={usuarioLogado} labelData={labelData} />
{children}
</div>
}
else return <SignIn callbackFromParent={this.DoLogin} labelData={labelData}/>;
}
}
此外,如果您愿意,可以LocalStorage在 DevTools 的Application选项卡中LocalStorage(Chrome)下检查您的收藏。此变量可用于所有文件,使用与以前相同的调用。
TA贡献1772条经验 获得超8个赞
您必须将身份验证数据存储在浏览器存储或 cookie 中。
如果您在用户身份验证后收到某种令牌(在 JWT 的情况下),您可以将其存储在浏览器中localStorage
(在选项卡之间保留)或sessionStorage
(在当前选项卡中保留)。如果您想提高安全性,您应该在一段时间不活动后使敏感信息无效或删除。好的做法是在短时间内使令牌失效(Web 服务在当前令牌过期之前向您发送新令牌,但在它过期后,用户必须再次登录)。这种方式可以防止窃取令牌,例如,当用户忘记注销并离开并打开浏览器时。
TA贡献2041条经验 获得超4个赞
您可以将其存储cookie
并读取cookie
并在 init 上设置值
或者您可以将其存储在其中localStorage
并从中读取
或者您也可以将其存储在其中indexedDB
并从中读取。
localStorage
可能是最简单的
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
实际的实现将在SignIn
组件中,它检查和设置值。
添加回答
举报