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

6 回复

这个如何解决

更多关于uni-app 使用uni-id时 用户可同时登陆多个设备的实战教程也可以访问 https://www.itying.com/category-93-b0.html


目前没实现这种功能

一般app不都是一个设备登录,其他登录的设备就被挤下线,这是很常见的需求吧

回复 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
})
回到顶部