uniapp 如何优雅的在每个页面判断是否登录?

  • 登录时会调用 login 方法把用户信息存到缓存里,
state: {
        /**
         * 是否需要强制登录
         */
        forcedLogin: true,
        hasLogin: false,
        userName: ""
    },
    mutations: {
        login(state, userName) {
            state.userName = userName || '新用户';
            state.hasLogin = true;
            uni.setStorage({
                key: 'userName',
                data: userName,
            });
        },
        logout(state) {
            state.userName = "";
            state.hasLogin = false;
            uni.removeStorageSync('userinfo')
            // uni.removeStorageSync('userinfo','USERS_KEY')
        }
    },
  • 在首页判断
    computed: mapState(['forcedLogin', 'hasLogin', 'userName','login']),
          onShow() {
              console.log(this.hasLogin)
              if (!this.hasLogin) {
                  uni.navigateTo({
                      url: '../login/login'
                  });
              }
          }

正常点击调转过来没问题,但是用谷歌调试时。一刷新页面就跳到登录页面了,各位大佬有没有好的办法。公司用 uniapp 做个小项目,刚接触不太懂….

vue
了先生有天去划船,孑孓孑孓孑孓孑孓孑孓~~
讨论数量: 3

我不是前端判断,是后端判断的。如果不登录返回特定的 code ,前端请求统一拦截为此 code 的请求,重定向到登录页。

3年前 评论
ManTouD 3年前

插件市场找个路由插件吧

3年前 评论

应该缺一个初始化吧,刷新之后没有读 storage 并恢复登录状态,所以每次刷 isLogin 都是 false,然后都调到登录页了。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!