【问题标题】:multiple sessions in passport.jspassport.js 中的多个会话
【发布时间】:2019-04-21 22:02:36
【问题描述】:

中间件设置

var session = require('express-session');
var passport = require('passport');
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: true
}));
app.use(passport.initialize());
app.use(passport.session());

我有两个单独的用户登录。一个是客户,另一个是商人

客户护照会话代码

var passport = require('passport');
var Strategy = require('passport-local').Strategy;
app.post('/login',
passport.authenticate('local', {successRedirect:'/customer/home',    failureRedirect:'/customer/login',failureFlash: true}),
function(req, res) {
  req.session.user=user;
  res.redirect('/customer/home');
});
passport.serializeUser(function(user, cb) {
cb(null, user._id);
});

passport.deserializeUser(function(id, cb) {
data.customerid(id, function (err, user) {
  if (err) { return cb(err); }
  cb(null, user);
});
});

passport.use(new Strategy(
function(username, password, cb) {
  data.customerlogin(username, function(err, user) {
    if (err) { 
        return cb(err); 
    }
    if (!user) {
         return cb(null, false); 
        }
    if (user.password != password) { 
        return cb(null, false); 
    }
    return cb(null, user);
});
}));

它适用于一个用户如何为另一个用户的商家创建另一个会话

【问题讨论】:

  • 会话以某种方式工作,但会话 1 正在覆盖会话 2 的数据。当我使用会话登录然后尝试登录会话 2 时,会话 2 的 cookie 数据被会话 1 覆盖

标签: node.js express passport.js


【解决方案1】:

第一个问题大概是这个

function(req, res) {
  req.session.user=user;
  res.redirect('/customer/home');
});

req.sessson.user = user 中的 user 很可能是未定义的。我建议您在此处查看您尝试实现的逻辑,并重新检查代码是否实现了该逻辑。

只有一个会话可能更简单。会话可以是客户角色或商家角色。然后,用户可以根据角色访问 Web 应用程序的某些部分。

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 2014-03-21
    • 1970-01-01
    • 2013-08-29
    • 2018-07-21
    • 2015-10-07
    • 1970-01-01
    • 2015-04-20
    • 2015-11-22
    相关资源
    最近更新 更多