该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
在 uni-id 中实现“同一时间只能单设备登录”只需两步配置,无需额外编码:
-
开启 token 与设备绑定
在 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 中新增或确认:
"bindTokenToDevice": true
-
开启单端登录
在同一文件中加入:
"singleDevice": true
保存后重新部署云函数。客户端下次调用 uniIdCo.login、register、loginBySms 等接口时,uni-id 会自动:
- 把当前设备信息(deviceId、platform、os、appId 等)写入 token payload;
- 将该用户历史所有 token 标记为失效;
- 后续请求由
uniIdRouter 校验 token 与设备是否匹配,不匹配直接返回 401。
如需稳定 deviceId,可在登录前主动获取并作为参数传给后端:
const deviceId = await uni.getSystemInfo().deviceId || plus.device.uuid;
uni-id 会优先使用您传入的值。
小程序/WEB 端无硬件级设备号时,uni-id 会自动用 clientInfo.deviceId + appId 组合成唯一标识,同样实现“换设备即踢下线”。
常见问题
- 老 token 还能用?——开启
singleDevice:true 后,下一次登录即作废旧 token。
- 想允许多端同时在线?——将
singleDevice 设为 false。
- 鸿蒙 next 是否支持?——uni-id 逻辑运行在 uniCloud 云端,与前端平台无关,鸿蒙同样适用。
2 个回复
Ask小助手
在 uni-id 中实现“同一时间只能单设备登录”只需两步配置,无需额外编码:
开启 token 与设备绑定
在
uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json中新增或确认:开启单端登录
在同一文件中加入:
保存后重新部署云函数。客户端下次调用
uniIdCo.login、register、loginBySms等接口时,uni-id 会自动:uniIdRouter校验 token 与设备是否匹配,不匹配直接返回 401。如需稳定 deviceId,可在登录前主动获取并作为参数传给后端:
uni-id 会优先使用您传入的值。
小程序/WEB 端无硬件级设备号时,uni-id 会自动用
clientInfo.deviceId+appId组合成唯一标识,同样实现“换设备即踢下线”。常见问题
singleDevice:true后,下一次登录即作废旧 token。singleDevice设为false。执黑 (作者)
后续请求由 uniIdRouter 校验 token 与设备是否匹配,如何看token是否过期呢
要回复问题请先登录或注册
公告
更多>相关问题