我试图让我的护照本地策略工作。
我已经设置了这个中间件:
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('/'); }
它总是失败并重定向到主页。
我不知道为什么会发生这种情况?为什么不认证?
在我的控制台我可以看到这是密码正确打印。
为什么不工作?
解决方法
我有一个类似的问题。可能是因为护照所需的快速会话中间件。按照以下顺序使用中间件进行修复:(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());