node.js – 护照的req.isAuthenticated总是返回false,即使我硬编码(null,true)

我试图让我的护照本地策略工作。

我已经设置了这个中间件:

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());

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...