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 做个小项目,刚接触不太懂….
我不是前端判断,是后端判断的。如果不登录返回特定的 code ,前端请求统一拦截为此 code 的请求,重定向到登录页。
插件市场找个路由插件吧
应该缺一个初始化吧,刷新之后没有读 storage 并恢复登录状态,所以每次刷
isLogin
都是false
,然后都调到登录页了。