2014-05-11 36 views
0

我正在使用护照js作为身份验证中间件,本地策略。有用。但是,当cookie过期时,我无法再登录。护照js,cookie已过期后无法登录

passport.use(new LocalStrategy({ 
    usernameField: 'email' 
    }, 
    function(username, password, done) { 
    mongoose.model('users').findOne({ 
     email: username, 
     password: password 
    }, function(err, result){ 
     if(result){ 
     var user = { 
      name: result.name, 
      email:result.email 
     }; 
     return done(null, user); 
     }else{ 
     return done(null, false, { message: 'Incorrect username.' }); 
     } 
    }); 
    } 
)); 

这是LocalStrategy登录。它会正确返回用户。但在我的浏览器中,我可以看到没有设置cookie。

如果我重新启动我的节点,那么它再次工作。这里有什么可能是错的?

+0

因此,您可以登录一次,然后验证请求工作,但除非重新启动节点,否则无法再次登录? – Esteban

回答

1

您需要使用express来设置会话功能。在您的应用程序的配置应该是这样的:

app.use(express.cookieParser()) // must come before session. 
app.use(express.session({ secret: 'super hard to guess' })); 
app.use(passport.initialize()); 
app.use(passport.session()); 

如果您使用快递4,你需要两个新的属地,express-sessioncookie-parser模块,这样反而会是:

var cookieParser = require('cookie-parser'); 
var session = require('express-session'); 

app.use(cookieParser()); 
app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
+0

是的,我已经这样做了。但问题是我在我的Cookie设置中使用了maxAge:new date()+ 360000。如果我删除了新的日期,它就起作用了。 – Per