执黑
执黑
  • 发布:2026-01-25 19:46
  • 更新:2026-01-25 20:14
  • 阅读:16

uni id 如何实现同一时间,只能单设备登录

分类:uni-app
2026-01-25 19:46 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

在 uni-id 中实现“同一时间只能单设备登录”只需两步配置,无需额外编码:

  1. 开启 token 与设备绑定
    uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 中新增或确认:

    "bindTokenToDevice": true  
  2. 开启单端登录
    在同一文件中加入:

    "singleDevice": true  

保存后重新部署云函数。客户端下次调用 uniIdCo.loginregisterloginBySms 等接口时,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 云端,与前端平台无关,鸿蒙同样适用。
内容为 AI 生成,仅供参考
执黑

执黑 (作者)

后续请求由 uniIdRouter 校验 token 与设备是否匹配,如何看token是否过期呢

要回复问题请先登录注册