2014-05-11 38 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