Express, Passportjs, 如何实现只允许用户在一处登陆?

Express, Passportjs, 如何实现只允许用户在一处登陆?

// passport文档中序列化反序列化的代码
// passport会创建一个session表存储用户的session
// 我通过mongoose操作mongodb
// session表是由passport创建的,我并没有session表的模型
// 我该如何优雅的做到,只允许用户在一处登陆

passport.serializeUser((user, done) => {
  const sessionUser = { _id: user._id, username: user.username }
  done(null, sessionUser)
})

passport.deserializeUser((id, done) => {
  User.findById(id, (err, user) => {
    done(null, user)
  })
})

我目前的思路是,在登陆的时候判断,用户的id,如果用户的id在session中存在,先在session表中删除session的记录,然后调用passport的done。实现只允许用户在一处登陆

但是由于没有session的模型,我如何才能更优雅的处理?

阅读 3k
2 个回答

只在一处应该怎么理解?是锁定ip还是锁定浏览器coockie?
据我所知,oauth2.0已经有这种的特性了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题