9***@qq.com
9***@qq.com
  • 发布:2019-03-01 22:18
  • 更新:2023-03-11 18:13
  • 阅读:24206

uniapp 怎么监测APP的登录状态

分类:uni-app

我在 APP.vue里 用watch 但是 只有打开APP的时候才会监测一次, 不想每一个页面写一次 watch ,有没有简单的办法

2019-03-01 22:18 负责人:无 分享
已邀请:
Uniapper开发者

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

9***@qq.com (作者) - 专业开发直销分销类软件

有没有人给回答下,求大佬

  • 蓝博消息

    请问怎么解决的 可以分享一下吗

    2021-05-20 11:08

UserX

UserX - Chaser

1、用uni.Storage试试吧https://uniapp.dcloud.io/api/storage/storage?id=setstorage
2、H5+API中应该有localStorage和sessionStorage

q***@qq.com

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

yourapis

我也遇到了,我是每个页面写一个判断是否登录,只能这种了。

  • 9***@qq.com (作者)

    可以在APP。VUE中 全局监听,是我没操作对,

    2019-03-05 00:02

  • yourapis

    回复 9***@qq.com:你是怎么监听的,能发一下代码或者做个说明吗?

    2019-03-07 03:21

SevBuild

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

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

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

3***@qq.com

业务需要每个页面加载时判断一下这个用户是否有权限打开这个页面如果有 就进入 没有就返回首页 这个应该怎么实现?

  • 寒鸦

    登录后保存token到Storage,页面加载方法里判断有没有token就行,没有路由守卫不方便

    2019-08-22 15:06

7***@qq.com

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

dasensen - 刘伟森

现在解决了吗

7***@qq.com

7***@qq.com

放在http请求里就可以了啊,每次请求前判断token是否过期,是否在登录状态。。。

W***@163.com

W***@163.com

使用uni-simple-router就行,和vue的很相识

3***@qq.com

3***@qq.com

用setInterval写个定时器检查行不行,我觉得可以吧,我正准备这么干

note744917

note744917 - 我的联系方式:wx: note744917

你得回炉重造一下

要回复问题请先登录注册