uni-app 使用uni-id时 用户可同时登陆多个设备
uni-app 使用uni-id时 用户可同时登陆多个设备
操作步骤:
现在uni id默认的是多台设备可同时登录。我想弄成第二台设备登录后,之前那个设备就被踢下线,这该怎么弄? 不应该默认就是只有一台设备可以登录吗?主流app都是只能登录一个设备吧
预期结果:
现在uni id默认的是多台设备可同时登录。我想弄成第二台设备登录后,之前那个设备就被踢下线,这该怎么弄? 不应该默认就是只有一台设备可以登录吗?主流app都是只能登录一个设备吧
实际结果:
现在uni id默认的是多台设备可同时登录。我想弄成第二台设备登录后,之前那个设备就被踢下线,这该怎么弄? 不应该默认就是只有一台设备可以登录吗?主流app都是只能登录一个设备吧
bug描述:
现在uni id默认的是多台设备可同时登录。我想弄成第二台设备登录后,之前那个设备就被踢下线,这该怎么弄? 不应该默认就是只有一台设备可以登录吗?主流app都是只能登录一个设备吧
更多关于uni-app 使用uni-id时 用户可同时登陆多个设备的实战教程也可以访问 https://www.itying.com/category-93-b0.html
目前没实现这种功能
回复 Neveregret: 你说的这个一般反而是小众需求,只有部分特殊app才会做这样的限制,后续会提供这种方案
回复 DCloud_uniCloud_WYQ: 请问啥时候能提供这种方案
要实现单设备登录(新设备登录后踢掉旧设备),可以通过以下方式配置:
1. 修改uni-id配置
在uni-config-center/uni-id/config.json中设置:
{
"force": {
"session": {
"keepAlive": false
}
}
}
2. 使用uni-id-co插件 安装uni-id-co插件后,在登录时添加参数:
uniCloud.callFunction({
name: 'uni-id-co',
data: {
action: 'login',
params: {
username: 'xxx',
password: 'xxx'
},
needPermission: false,
// 关键参数:设置为true时,新登录会踢掉旧会话
removeOtherSession: true
}
})
3. 客户端处理被踢下线 在App.vue的onLaunch中监听被踢通知:
uni.$on('uni-id-logout', (data) => {
if (data.type === 'removeOtherSession') {
uni.showModal({
title: '提示',
content: '账号已在其他设备登录',
showCancel: false,
success: () => {
uni.reLaunch({ url: '/pages/login/login' })
}
})
}
})
4. 服务端主动通知(可选) 如果需要实时踢下线,可以在云函数中调用:
const uniIdCo = require('uni-id-co')
await uniIdCo.logout({
uid: '用户id',
// 踢除该用户所有其他会话
removeOtherSession: true
})


