我正在尝试使我的Passport本地策略生效。
我已经设置了这个中间件:
passport.use(new LocalStrategy(function(username, password, done) { //return done(null, user); if (username=='ben' && password=='benny'){ console.log("Password correct"); return done(null, true); } else return done(null, false, {message: "Incorrect Login"}); }));
但是然后在这里
app.use('/admin', adminIsLoggedIn, admin); function adminIsLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); // if they aren't redirect them to the home page res.redirect('/'); }
它总是失败,并重定向到主页。
我不知道为什么会这样?为什么不进行身份验证?
在我的控制台中,我可以看到Password Correct正在打印。为什么不起作用?
Password Correct
我有一个类似的问题。可能是由于护照需要使用快速会话中间件。通过按以下顺序使用中间件来修复它:(Express 4)
var session = require('express-session'); // required for passport session app.use(session({ secret: 'secrettexthere', saveUninitialized: true, resave: true, // using store session on MongoDB using express-session + connect store: new MongoStore({ url: config.urlMongo, collection: 'sessions' }) })); // Init passport authentication app.use(passport.initialize()); // persistent login sessions app.use(passport.session());