unicloud云开发进阶47-项目31 修改tockenExpired过期时间和getCurrentUserInfo用户信息

164 阅读1分钟

修改tocken过期时间

之前在config.json中配置过过期时间是7200秒 app的过期时间是2592000,是30天

在云函数中配置

tokenExpiresIn改成30天过期,这里是全平台时间,如果下面在不同平台配置了其他时间,会覆盖这里的时间

{
  "passwordSecret": "quanzi", 
  "passwordStrength": "medium", 
  "tokenSecret": "quanzi@#z4", 
  "tokenExpiresIn": 2592000, 
  "tokenExpiresThreshold": 3600, 
  "passwordErrorLimit": 6, 
  "passwordErrorRetryTime": 3600, 
  "autoSetInviteCode": false,
  "forceInviteCode": false, 

image.png

之前在store中判断用户是否登录是判断是否有userinfo,如果有,就返回true

可以增加判断tocken是否过期

let hostUserInfo = uni.getStorageSync('uni-id-pages-userInfo')||{}
// console.log( hostUserInfo);
const data = {
    userInfo: hostUserInfo,
    hasLogin: Object.keys(hostUserInfo).length != 0
}

getCurrentUserInfo()

获取当前用户信息

文档位置:

uniapp.dcloud.net.cn/uniCloud/cl…

响应参数

字段类型说明
uidNumber当前用户uid
roleArray用户角色列表。admin用户返回["admin"]
permissionArray用户权限列表。注意admin角色此数组为空
tokenExpiredNumbertoken过期时间
let hostUserInfo = uni.getStorageSync('uni-id-pages-userInfo')||{}
console.log( hostUserInfo);
console.log(uniCloud.getCurrentUserInfo());
const data = {
	userInfo: hostUserInfo,
	hasLogin: Object.keys(hostUserInfo).length != 0
}

打印结果中有一个tokenExpired

image.png

过期时间 - 当前时间,如果是负值,就表示token过期了

let hostUserInfo = uni.getStorageSync('uni-id-pages-userInfo')||{}
console.log( hostUserInfo);
// 判断toucken是否过期,返回值为负就是过期了
console.log(uniCloud.getCurrentUserInfo().tokenExpired - Date.now());

image.png

当用户名和token过期时间都有才返回true,如果已经过期,就清空用户信息

let hostUserInfo = uni.getStorageSync('uni-id-pages-userInfo')||{}
console.log( hostUserInfo);
// 判断toucken是否过期,返回值为负就是过期了
let tokenTime = uniCloud.getCurrentUserInfo().tokenExpired - Date.now()
// 如果token过期,清空用户信息,把用户信息改成空对象
if(tokenTime <= 0)hostUserInfo={}