微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐