xiaoxiao昱
xiaoxiao昱
  • 发布:2022-10-21 14:40
  • 更新:2023-07-14 12:19
  • 阅读:798

【报Bug】uni-id token失效后,不会清除storage存储的用户信息

分类:uniCloud

产品分类: uniCloud/App

操作步骤:
  1. 使用uni-starter搭建项目,其集成了uni-id
  2. 待token快失效时,停止操作,避免token被刷新
  3. token过期,查看localstorage,发现用户信息还存在;查看“我的”页面,用户信息仍然被渲染

预期结果:
  1. token过期,清除localstorage的用户信息
  2. token过期,关于用户信息的页面渲染全部刷新

实际结果:
  1. token过期,localstorage中的用户信息未清除
  2. token过期,关于用户信息的页面仍被渲染

bug描述:

token失效,请求接口返回错误“TOKEN_INVALID_TOKEN_EXPIRED 未能获取当前用户信息:登陆状态失效,token已过期”

查看localstorage,发现用户信息还存在,“我的”页面依然显示当前用户昵称

2022-10-21 14:40 负责人:DCloud_uniCloud_JSON 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

我觉得这不是bug,浏览器目前对于CookieLocal Storage并不能实现像redis那样的自动删除功能,localstorage中的用户信息存在,并不能作为是否登录的判断条件,前端对于登录的判断,可以简单的采用uni_id_token是否存在,已及uni_id_token_expired是否过期来判断,基于Local Storage是不安全和可修改的特点,后端应该调用checkToken(),用以检查token的合法性。

  • xiaoxiao昱 (作者)

    这是uni-starter和uni-id里面的,我自己也能改,但最好还是官方处理一下,这样其他开发者直接拿来就可以直接用

    2022-10-21 17:03

  • DCloud_uniCloud_JSON

    回复 xiaoxiao昱: token不计划清理,haslogin的判断条件会升级一下。

    2022-10-24 12:06

  • 呆狗的一生

    回复 DCloud_uniCloud_JSON: hasLogin判断条件有点简单了

    2022-10-24 16:32

  • xiaoxiao昱 (作者)

    回复 DCloud_uniCloud_JSON: 既然token已失效过期,留着的意义在哪?

    2022-10-25 09:06

  • DCloud_uniCloud_JSON

    回复 xiaoxiao昱: 新登录后会覆盖,不影响业务且数据量不大没有清理的必要。如果你非要清理也可以清理关系不大

    2022-10-25 14:26

  • 5***@qq.com

    回复 DCloud_uniCloud_JSON: 现在都没有升级吧。hasLogin是true 。直接点击退出还是token过期

    2023-03-05 19:19

  • DCloud_uniCloud_JSON

    回复 5***@qq.com: hasLogin = true表示登录过,和token是否过期无关,检查token是否过期可以调用uniCloud.getCurrentUserInfo().tokenExpired 判断

    2023-03-06 11:11

k***@163.com

k***@163.com

现在我遇到了这样的问题,又显示个人信息,又要重新登录。显得非常混乱,不知道我有没有改动代码,修改这些变得很乱。我本来想借助缓存中的某些信息做判断,结果就很乱了。本来我想不想修改uni-id-modules代码的。
当然了,也可以多加过期判断,只是比较乱一点。
我记得重新登陆做判断之后,居然是之前缓存的id和角色,结果判断异常,暂时不知道问题在哪里。我使用的方法记得是uniCloud.getCurrentUserInfo()
不过我是在script中写的const userinfo=uniCloud.getCurrentUserInfo(),不了解是不是因为这样的原因导致没有更新

要回复问题请先登录注册