我在 APP.vue里 用watch 但是 只有打开APP的时候才会监测一次, 不想每一个页面写一次 watch ,有没有简单的办法
9***@qq.com
- 发布:2019-03-01 22:18
- 更新:2023-03-11 18:13
- 阅读:24695
uniapp 怎么监测APP的登录状态
分类:uni-app
16 个回复
Uniapper开发者 - https://www.uniapper.com/(uni-app学习交流)
登陆了把用户信息储存本地,然后在App.vue定义一个函数判断就行了详见:uniapp登陆状态判断
global.isLogin = function(){
try{
var suid = uni.getStorageSync('suid');
var srand = uni.getStorageSync('srand');
}catch(e){
//TODO handle the exception
}
if(suid == '' || srand == ''){
return false;
}else{
return [suid, srand];
}
};
9***@qq.com (作者) - 专业开发直销分销类软件
有没有人给回答下,求大佬
蓝博消息
请问怎么解决的 可以分享一下吗
2021-05-20 11:08
UserX - Chaser
1、用uni.Storage试试吧https://uniapp.dcloud.io/api/storage/storage?id=setstorage
2、H5+API中应该有localStorage和sessionStorage
q***@qq.com
我也一直在想这个问题,楼上的可能没理解到楼主的意思 他是每个页面判断是否登陆 所以要监听路由
然后没有vue的全局路由卫士,不可能每个页面都是watch一次 这样要疯掉
9***@qq.com (作者)
可以在APP。VUE中 全局监听,是我没操作对,
2019-03-05 00:02
4***@163.com
回复 9***@qq.com:你是怎么监听的,能发一下代码或者做个说明吗?
2019-04-09 13:55
Daniel桔
回复 9***@qq.com: 求解答,如何在全局监听的,我看了下全局生命周期函数并没有呀
2019-08-21 17:42
8***@qq.com
回复 9***@qq.com: 判断是否登录解决了吗,能上传哈代码吗,谢谢了
2019-12-19 18:22
即时通讯开发
回复 9***@qq.com: app.vue 只能触发一次,又不是每次路由跳转都会触发,假设我前一分钟没过期 后一分钟过期了
2022-01-18 10:08
yourapis
我也遇到了,我是每个页面写一个判断是否登录,只能这种了。
9***@qq.com (作者)
可以在APP。VUE中 全局监听,是我没操作对,
2019-03-05 00:02
yourapis
回复 9***@qq.com:你是怎么监听的,能发一下代码或者做个说明吗?
2019-03-07 03:21
SevBuild
使用VUEX来做统一状态管理,具体的你可以参考那个uniapp-login示例。
q***@qq.com
那个不行的,比如那个模板的user组件,他是通过判断vuex里储存的登陆状态来显示或者隐藏某些是否需要登陆后才能看见的东西,现在你这个app有50个这种页面 你都去写50次?
所以才有一个路由拦截器统一处理 譬如vue-router的beforeeach 昨天我提了这个问题,有个人的处理方法是对路由进行二次封装 原理和vue-router的全局路由卫士一样,这个方法茅塞顿开
2019-03-04 09:30
凌悦
回复 q***@qq.com: 你好请问怎么二次封装,我也是有这个问题,很多页面都要判断登录状态的
2019-05-17 18:36
yourapis
你这是存储状态,这种不是问题,关键问题是
if(isLogin){
}
这代码放哪里。。。。这个才是重要的。。
Uniapper开发者
你在需要登录的页面判断就行了啊
var res = global.isLogin();
if(!res){
uni.showModal({
title:'请登录',
content:"请登录",
success:function(){
uni.navigateTo({
url:"/pages/login"
});
}
})
}
2019-03-12 23:48
1***@qq.com
回复 Uniapper开发者: 是写在哪个方法里面呢?mounted? 如果页面很多呢?怎么去解决
2019-07-16 14:55
M***@163.com
回复 Uniapper开发者: 你有100个页面,你写100次吗?一点都不实际好吗
2019-12-25 11:09
x***@163.com
回复 M***@163.com: 现在这个问题如何解决了?
2020-03-05 14:45
有问 - 生活,趣与失。
不过H5+SDK里的缓存不太好用,因为要在下一页才能获取到,而且跨页的获取也不是很灵活。
我使用的是其它前端里的HTML5缓存,测试下来比H5+的好用。
s***@126.com
我也遇到相同问题,楼主意思是登录后,各页面会根据登录状态改变重新渲染吧,官方给出的登录模板,是通过官方例子是登录成功后通过uni.reLaunch(),重新加载页面觉得也不够好。试过将全局挂到Vue.prototype.gloabal = global;上,然后在页面data()中绑定也不行
8***@qq.com
在app.vue里面写一个登录状态判断! 如果是请求头可以调取一下看请求头是否失效 失效了调回登录页面 没失效正常访问
2019-05-24 00:42
s***@126.com
回复 8***@qq.com: 兄台说的是登录状态判断,很好的建议。我的意思是进入登录页面登录后其他相关页面自动显示登录后信息,原来做法是在每个页面onShow()中将全局的状态变量赋值给绑定属性(在data()中直接赋值给绑定属性不会更新),虽然可以实现但做法比较笨。后面改成vuex比较好实现了该功能,自带的hello有示例
2019-05-25 09:51
3***@qq.com
业务需要每个页面加载时判断一下这个用户是否有权限打开这个页面如果有 就进入 没有就返回首页 这个应该怎么实现?
寒鸦
登录后保存token到Storage,页面加载方法里判断有没有token就行,没有路由守卫不方便
2019-08-22 15:06
7***@qq.com
这个问题最后到底这么解决啊?在APP里监听应该只能加载的时候监听一次,但是安卓的物理后退阻止不了啊。以前Vue的项目,在全局加了路由拦截 router.beforeEach 每次进一个页面前提前去Vuex里找是否登陆,现在uni-app 不支持 Vue-router,总不能每个页面里都去判断一下吧?
x***@163.com
现在这个解决了么?
2020-03-05 14:44
1***@163.com
回复 x***@163.com: 可以在app中监听一下,然后配合uni.reLaunch使用 应该可以吧
2020-03-30 08:33
dasensen - 刘伟森
现在解决了吗
7***@qq.com
放在http请求里就可以了啊,每次请求前判断token是否过期,是否在登录状态。。。
W***@163.com
使用uni-simple-router就行,和vue的很相识
3***@qq.com
用setInterval写个定时器检查行不行,我觉得可以吧,我正准备这么干
note744917 - 我的联系方式:wx: note744917
你得回炉重造一下