J'ai deux serveurs Node.js locaux:sessions sur deux serveurs locaux Node.js
-je utiliser express.js et passport.js pour l'authentification. L'authentification fonctionne correctement, si:
- je me connecte sur le serveur 1
- je me connecte sur le serveur 2
puis la session sur le serveur 1 disparait. Comment cela pourrait-il être évité?
app.use(bodyParser());
app.use(cookieParser());
app.use(session({
secret: '12345',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(
function(username, password, done) {
users.getActiveByUsername(username, function(err, user) {
if (err) {console.log(err); return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username' });
}
if (user.password != password) {
return done(null, false, { message: 'Incorrect password' });
}
return done(null, user);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.post("/login", jsonParser, function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { res.status(400).send('Wrong username or password');return; }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.json({'success':'Successful login'});
});
})(req, res, next);
});
S'il vous plaît fournir du code, en particulier lorsque vous gérez la session. –
Je crois que vous devez stocker le cookie de session dans un stockage externe comme Redis et vérifier la validité de la session de l'utilisateur dans chacun des serveurs Node.js. – Artem
@KayvanMazaheri a ajouté le code – Maxim