首页 > 解决方案 > 离子本地存储不会第一次加载

问题描述

当我想对用户进行身份验证以检查该用户是否已经登录时,我遇到了问题。无论用户是否登录,侧边菜单都会有所不同。我正在使用 localstorage 从 API 中保存用户的令牌。这是我在 login.ts 中保存令牌的方式。

localStorage.setItem("token",this.data.token);

之后我想使用本地存储来检查用户是否已经登录或没有使用这个条件

 if(localStorage.getItem("token") !== null && localStorage.getItem("token") !== ""){
  console.log("already login, token :"localStorage.getItem("token"));
  this.isLoggedIn=true;
}
else{
  console.log("not login")
  this.isLoggedIn=false;
}

这种情况不会在第一页重新加载时运行,但如果我重新加载浏览器它就可以工作。我已经把这个条件放在 ngOnInit()、ionViewWillEnter()、constructor() 里面,没有什么能解决这个问题

标签: ionic3

解决方案


我认为您将需要使用基于承诺的语法来从本地存储中保存/检索值。

    this.localStorage.get('token').then((value) => {
    // Do your side menu stuff
    this.isLoggedIn=true;
    });

还结帐:https ://github.com/ionic-team/ionic-conference-app用于类似的用例,其中启用/禁用侧边菜单基于,如果用户登录或未登录

希望这可以帮助..


推荐阅读