несколько сессий в passport.js - PullRequest
       12

несколько сессий в passport.js

0 голосов
/ 16 февраля 2019

middieware setup

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());

У меня есть два отдельных пользователя для входа.один является клиентом, а другой - merchent

код сеанса паспорта клиента

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 Ответ

0 голосов
/ 19 февраля 2019

Первая проблема, вероятно, заключается в следующем:

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

Значение user в req.sessson.user = user, скорее всего, не определено.Я бы посоветовал пересмотреть логику, которой вы пытаетесь достичь, и перепроверить, реализует ли код логику.

Вероятно, проще иметь только один сеанс.Сессия будет либо в роли клиента, либо в роли продавца.Затем пользователь получит доступ к частям веб-приложения в зависимости от роли.

...