Also ich eine Web-Anwendung mit Isomorphic-Redux und React.js erstellen. Ich versuche derzeit, grundlegende Authentifizierung mit Pass in Node.js arbeiten zu bekommen. Ich habe jedoch ein Problem festgestellt, bei dem meine Cookie-Sitzung nicht in den Browser geladen wird, wenn ich mich anmelde.Express-Sitzung nicht Sitzung speichern
Hier ist eine verkürzte Version des Codes, den ich bisher geschrieben habe.
Server.js
import Express from 'express';
import passport from 'passport';
import bodyParser from 'body-parser';
import cookieParser from 'cookie-parser';
import expressSession from 'express-session';
import serverConfig from './config';
const app = new Express();
// Apply body Parser and server public assets and routes
app.use(cookieParser());
app.use(bodyParser.json({ limit: '20mb' }));
app.use(bodyParser.urlencoded({ limit: '20mb', extended: true }));
app.use(expressSession({
secret: serverConfig.sessionSecret,
resave: false,
saveUninitialized: false
}));
import pp from './passport';
pp();
app.use(passport.initialize());
app.use(passport.session());
passport.js
import passport from 'passport';
import mongoose from 'mongoose';
import path from 'path';
import User from './models/user.model';
import local from './strategies/local';
const pp = () => {
// Serialize sessions
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// Deserialize sessions
passport.deserializeUser(function(id, done) {
User.findOne({
_id: id
}, '-salt -password', function(err, user) {
done(err, user);
});
});
local();
}
export default pp;
./strategies/local.js
import passport from 'passport';
import passportLocal from 'passport-local';
import mongoose from 'mongoose';
const LocalStrategy = passportLocal.Strategy;
const User = mongoose.model('User');
const local =() => {
passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password'
},
(username, password, done) => {
User.findOne({ username: username }, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: 'Unknown user or invalid password'
});
}
if (!user.authenticate(password)){
return done(null, false, {
message: 'Unknown user or invalid password'
});
}
return done(null, user);
});
}
));
}
export default local;
Wenn ich log es ist in der Lage, die Sitzung zu serialisieren, aber da ich rate, wird die Sitzung nicht gespeichert, es deserialisiert die Sitzung nicht.