随便取个昵称
随便取个昵称
  • 发布:2023-12-22 23:27
  • 更新:2023-12-23 14:30
  • 阅读:226

【报Bug】checkToken()返回的对象在服务器端取不了属性值?

分类:uniCloud

产品分类: uniCloud/App

示例代码:

const uniID = require('uni-id-common')
// const db = uniCloud.database()

async function myCheckToken(clientInfo,token){
// 创建uni-id实例,其上方法同uniID
const tokenRes = await uniID.createInstance({
clientInfo
}).checkToken(token)
return tokenRes

}
module.exports = {
_before: function () { // 通用预处理器
const httpInfo = this.getHttpInfo()
const clientInfo = this.getClientInfo()
const {token,body} = httpInfo.headers
if(body){
this.params = JSON.parse(body)
}
// let uid
if(token) {
// 创建uni-id实例,其上方法同uniID
this.tokenRes = myCheckToken(clientInfo,token)
// if(this.tokenRes.errCode === 0) {
// this.uid = this.tokenRes.uid
// // this.tokenRes = tokenRes
// }else{
// throw{
// // errCode: tokenRes.errCode,
// errCode: 4004,
// errMsg: 'token无效,请先登录'
// }
// }
}else{
throw{
errCode: 404,
errMsg: '请先登录'
}
}
},
test: function() {
const uid = this.tokenRes.uid //这里取的uid值为空
return this.tokenRes
},
_after(error, result) {
if(error) {
return error
}
return result
}
}

操作步骤:

如上代码

预期结果:

如上描述

实际结果:

如上描述

bug描述:

用点号取this.tokenRes对象里的属性均为空值,如下取值方式:
this.tokenRes.uid
this.tokenRes.errCode

但却可以把对象this.tokenRes整体返回给客户端,客户端接手到的结果如下:
data:
code: 0
errCode: 0
exp: 1711028570
iat: 1703252570
permission: []
role: []
uid: "65855260fe975f47a5d321df"
proto: Object
errMsg: "request:ok"

2023-12-22 23:27 负责人:无 分享
已邀请:
随便取个昵称

随便取个昵称 (作者)

补充问题:从数据表uni-id-users删除用户记录后,checkToken()验证用户token仍然有效,如何解决?

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

你的myCheckToken是个async函数,调用的时候没有await

要回复问题请先登录注册