Ich arbeite an einem einfachen sozialen Netzwerk und ich möchte, dass Benutzer sich lokal registrieren und einloggen. Ich folgte this Tutorial und der gesamte Code läuft ohne Fehler. Wenn ich mich jedoch anmelde, übergibt der Benutzer die Authentifizierung, bleibt aber nicht in der Sitzung, wenn ich req.session
auf der Indexroute drucke. Hier ist meine Pass-Konfigurationsdatei:Passportjs speichert Benutzer nicht in Sitzung nach dem Login
var LocalStrategy = require('passport-local').Strategy;
var User = require('../server/models/User.js');
module.exports = function(passport){
passport.serializeUser(function(user, done){
console.log('Serialized');
done(null, user._id);
});
passport.deserializeUser(function(id, done){
console.log('Deserialized');
User.findOne({id:id}, function(err, user){
done(err, user);
});
});
passport.use('local-login', new LocalStrategy({
usernameField:'email',
passwordField:'password',
passReqToCallback:true
},function(req, email, password, done){
console.log('Started');
User.findOne({email:email}, function(err, user){
console.log('Find query');
if(err){
console.log('Error occured');
console.error(err);
return done(err);
}
console.log('No error');
if(!user)return done(null, false, req.flash('loginMessage', 'No user with this email found'));
console.log('Got user', user);
if(!user.validatePassword(password, user.password)){
console.log('Not valid suka');
return done(null, false, req.flash('loginMessage', 'Wrong password!'));
}
console.log('Valid pass');
return done(null, user);
});
}));
}
Das ist meine server.js Datei:
//Dependencies
const express = require('express');
const passport = require('passport');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const flash = require('connect-flash');
const path = require('path');
const morgan = require('morgan');
const mongoose = require('mongoose');
//Mongo setup
var mongoPath = 'mongodb://localhost:27017/party-net';
mongoose.connect(mongoPath, function(){
console.log('Party-net database connected');
});
//Passport
require('./config/passport.js')(passport);
//Application setup
var app = express();
//Static files
app.use('/views', express.static(path.join(__dirname, 'public', 'views')));
app.use('/scripts', express.static(path.join(__dirname, 'public', 'scripts')));
app.use('/node_modules', express.static(path.join(__dirname, 'node_modules')));
//Middleware setup
app.use(morgan('dev'));
app.use(cookieParser());
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
app.use(session({secret:'muchsecretinfomustkipithir', saveUninitialized:true, resave:true}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
//Routes
const index = require('./server/routes/index.js')(app, passport);
const api = require('./server/routes/api.js')(app, passport);
app.listen(8080, function(){
console.log('Server listening on port 8080');
});
Anmeldung Route Code:
app.post('/api/login', passport.authenticate('local-login', {
failureRedirect:'/'
}), (req, res) => {
console.log('Login route', req.isAuthenticated(), req.session);
//res.sendStatus(200);
res.redirect('/');
//res.redirect('/'+req.user.name+'/'+req.user.lastname);
});
Und schließlich Kodeindex Route:
app.get('/:firstname/:lastname', isLoggedIn , (req, res) => {
console.log('Requested', req.user, req.isAuthenticated());
res.send('Logged in successfully ' + req.params.firstname + ' ' + req.params.lastname);
});
Danke so sehr du mich gerettet! –