猿问

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的模型,我如何才能更优雅的处理?


翻阅古今
浏览 450回答 2
2回答

茅侃侃

楼主尝试一下 express-js-passport-js-how-to-restrict-multiple-login-by-the-same-user 这个看行不passport-one-session-per-user

杨__羊羊

只在一处应该怎么理解?是锁定ip还是锁定浏览器coockie?据我所知,oauth2.0已经有这种的特性了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答