全栈OkLin
全栈OkLin
  • 发布:2022-05-07 17:18
  • 更新:2023-02-03 17:58
  • 阅读:664

uniCloud.importObject 云对象如何添加拦截器?

分类:uniCloud

uniCloud.importObject 云对象在加载时,如果服务端抛出token异常
{ errCode: 'TOKEN_INVALID_TOKEN_EXPIRED', errMsg: 'token已过期' }

前端会弹窗提示errMsg,但并不会自动跳转登录界面,因此想自己添加拦截器

但是查了文档uniCloud.addInterceptor不适用于云对象,可有其他办法?

2022-05-07 17:18 负责人:无 分享
已邀请:
hws007

hws007 - 我就是我!

把uniCloud.importObject封装一下!判断过期!跳转登陆界面

  • 全栈OkLin (作者)

    需求是在每次云对象调用时判断过期,就算封装了importObject,也只会在import时触发一次吧?

    2022-05-09 08:15

  • hws007

    回复 全栈OkLin: 就是封装后,每次调用云对象,服务器返回token过期了,然后前端就直接判断跳转登录啊,

    2022-05-09 18:37

呆狗的一生

呆狗的一生 - 呆狗的一生

不会哎

DCloud_heavensoft

DCloud_heavensoft

  1. uniCloud客户端api新增了onResponse接口,可以监听uniCloud服务器返回的响应体内容
  2. pages.json新增了uniIDRouter配置:可以定义哪个页面是login页面;哪些页面需要有效的uni-id token才能登录;是否开启云端返回token无效就自动转向登陆页

方案1可以灵活的处理所有需求,但需要自己编程。
方案2可以简单的配置下,常见需求就不用自己开发了。

更新:2个方案均已经上线

  • 全栈OkLin (作者)

    不好意思啊,没注意看到这个回复,又开了一个新帖。。。方案1就即可,可以灵活处理不同的错误码。而方案2不灵活

    2022-05-11 11:51

  • 全栈OkLin (作者)

    建议用 uniCloud.addInterceptor 这种方式注册拦截器,方便管理代码。或者跟云函数用同一个拦截器也行

    2022-05-11 11:54

  • Neveregret

    请问这两个功能啥时候加进来,现在就需要,自己写挺麻烦的

    2022-06-07 23:45

  • Neveregret

    关于方案2,我觉得可以根据本地token是否有效进而判断是否跳转登录页,依靠云端返回的token会有网络延迟,影响用户体验。另外,如果app默认登录方式是一键登录,希望在判断token无效后跳转到的是一键登录页面。

    2022-06-08 00:27

  • DCloud_heavensoft

    回复 Neveregret: 方案1已经提供,升级到3.4.14。方案2还在开发中

    2022-06-09 15:56

  • l***@163.com

    两个方案都没有解决提问者的问题。应该给拦截器添加云对象的监听才是啊

    2022-06-13 09:22

  • DCloud_heavensoft

    回复 l***@163.com: 你是说uni.addInterceptor?这个只能拦截uni.的api,你想怎么写才能拦截云对象的方法?还是onResponse写法简单些

    2022-06-13 23:27

要回复问题请先登录注册