追梦随想
追梦随想
  • 发布:2023-04-12 17:26
  • 更新:2023-06-09 19:57
  • 阅读:319

请求云对象返回结果时 token 不能续期了,这是为什么

分类:uniCloud

最近经常需要登录,为了测试自动续期,我特意记录了登录时间为 15:10
token 有效期默认为2小时,也就是说在17:10后会过期重新登录
我在17:09分的时候请求了云对象,发现返回的结果里面并没有新的 token
然后过了几分钟再次请求云对象,这时候就提示已经过期

17:09:02.478 [本地调试][云对象:order]调用方法:[confirm],请求参数: {"goods_id":"642e980028064a03b74c2dbd","number":"1"}   
17:09:03.204 [本地调试][云对象:user_account]调用方法:[detail],请求参数: 634c3454b1fb0700013ff797   
17:09:03.432 [本地调试][云对象:user_account]返回结果: {"errCode":0,"errMsg":"ok","data":Object}   
17:09:03.447 [本地调试][云对象:user_address]调用方法:[get_default],请求参数: 634c3454b1fb0700013ff797   
17:09:03.652 [本地调试][云对象:user_address]返回结果: {"errCode":0,"errMsg":"ok","data":Object}   
17:09:03.658 [本地调试][云对象:order]返回结果: {"errCode":0,"errMsg":"ok","order":Object,...}   

17:15:03.635 [本地调试][云对象:order]调用方法:[confirm],请求参数: {"goods_id":"642e980028064a03b74c2dbd","number":"1"}   
17:15:04.182 [本地调试][云对象:order]返回结果: {"errCode":"uni-id-token-expired","errMsg":"登陆状态失效,token已过期","code":30203} 

测试结果证明 token 没有自动续期,我记得之前是可以的,难道是因为H5平台的原因?但是也不应该啊,续期是云对象返回来的,实际上根本没有返回

2023-04-12 17:26 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

结果里面有什么是你自己实现的,你返回token给客户端了吗?

  • 追梦随想 (作者)

    云对象的结果却是改造过,为了避免每个云对象都要写一遍,所以封装了下,我以为返回的时候框架会自动带上token续期,在开发过程中我发现token是从操作数据库的结果返回的,这样的话岂不是每次操作数据库都需要对返回结果做过判断,因为有时候一个方法内并非只执行一次数据库,那么最后一次执行数据库的结果未必就带了新的token

    2023-04-23 16:39

追梦随想

追梦随想 (作者)

@DCloud_uniCloud_WYQ
这次我确定返回给客户端新的token了,但是客户端似乎并没有自动保存,到时间后还是退出登录了

{  
    "errCode": 0,  
    "errMsg": "ok",  
    "data": [{  
        "_id": "6437cb81f43e603fbe515f0f",  
        "goods_id": "63f4f138e1a35c87850bc4a8",  
        "buy_count": 7,  
        "title": "统帅(Leader)海尔智家 1.5匹 冷暖壁挂式空调挂机 三级变频 智能 自清洁 KFR-35GW/06XBA83TU1 以旧换新",  
        "thumbnail": "https://mp-be528031-297c-4bb4-8fb2-dcbbbe4e1e55.cdn.bspapp.com/cloudstorage/f8ec133c-aaea-4671-8c46-428101065408.jpg",  
        "market_price": 8900,  
        "sell_price": 8000  
    }],  
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2MzRjMzQ1NGIxZmIwNzAwMDEzZmY3OTciLCJyb2xlIjpbXSwicGVybWlzc2lvbiI6W10sInVuaUlkVmVyc2lvbiI6IjEuMC4xMyIsImlhdCI6MTY4MjQyOTQ5NSwiZXhwIjoxNjgyNDM2Njk1fQ.FhowzMtzPd_WoFUzdFoPAolLoHnI07DJAuUC24jYGLM",  
    "tokenExpired": 1682436695451  
}

还是说不是这么返回的?

  • 呆狗的一生

    我就是问问,为啥你认为客户端会自动保存呢?

    2023-04-25 22:05

  • 呆狗的一生

    那么,你可不可以在客户端请求结束时,进行额外的判断呢,如果返回了 token和tokenExpired,就进行手动保存!你是在何处看到说,会自动保存的?有文档出处吗?

    2023-04-25 22:10

  • 追梦随想 (作者)

    回复 呆狗的一生: 我记得文档上说过会自动续期的,否则每个请求都要加判断了,因为这个云对象的请求方式是官方封装好的,除非自己再次封装那确实没啥问题了

    2023-04-25 22:32

  • 追梦随想 (作者)

    回复 呆狗的一生: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj.html#get-uni-id-token 你看下文档说明,不过只是说会自动管理uni-id的token,云对象返回的token会不会自动保存我也不知道。。。如果不保存那就太坑了。。。

    2023-04-25 22:47

呆狗的一生

呆狗的一生 - 呆狗的一生

你说的有道理,云对象的请求方式是官方封装好的。我用的是云函数,我自己封装了请求方法,主要是添加了是否返回token的判断。那你自己测试一下,前端调用云对象时,如果返回新的token会不会自动保存,我也不是太清楚。

  • 追梦随想 (作者)

    嗯,我之前的项目也是用的云函数,这次想改用云对象,代码都写了很多了,谁知道这么大个坑,官方也不给个话,实在不行就把请求方式再封装一遍了

    2023-04-26 20:18

追梦随想

追梦随想 (作者)

@DCloud_uniCloud_WYQ
@DCloud_uniCloud_CRL
大佬来回个话啊,究竟是云对象返回的token客户端不能自动保存,还是说返回格式不对呢?

5***@qq.com

5***@qq.com

也是这个问题?坐等解决方案

要回复问题请先登录注册