2015-04-14 57 views
3

我一直在嘗試使用sails來實現記憶功能。我想要一個會話持續到瀏覽器關閉。但是,如果在用戶登錄時勾選了複選框,我希望會話持續30天。我從這裏使用了記住我的護照策略: https://github.com/jaredhanson/passport-remember-me 但它最終坐在帆船會議的最前面,而最先召喚的人最終取代了另一個。sails.js會話 - 記憶功能

+1

如果您使用[** sails-auth **](https://github.com/tjwebb/sails-auth),passoprt.js會話將自動保持活動狀態。 –

+0

是的,我現在正在使用持久會話,但我想知道是否有一種方法來動態控制maxage。例如,將它設置在/ config/sessions中,默認情況下在窗口關閉或製表符關閉時刪除,除非記住我複選框被勾選,然後將會話設置爲最後30天。也許我不明白護照會話如何與默認的風帆整合。 – Imprecation

回答

1

您可以設置cookie年齡到期。

我在我的登錄控制器 - > passport.callback中做了。

passport.callback(req, res, function (err, user, challenges, statuses) { 
     ... 

     if (req.param('remember', false) == true) { 
      req.session.cookie.maxAge = 1000 * 60 * 60 * 24 * 30; 
     } 
     req.login(user, function (err) { 
     ... 
     } 
} 

這並不真的感覺不對,如果你登錄時發送一些其他的餅乾,它會影響他們的一生也是如此。

但它的工作原理,我找到了它,因爲查找與帆相關的東西的文檔就像挖油。

此外,我注意到Passport沒有正確銷燬會話,必須通過在註銷控制器中調用req.session.destroy();來手動完成。

0

基本上你可以自己設置cookie並設置只是調用登錄功能之前手動

res.cookie('userSession', { 
     items: [1, 2, 3] 
    }, { 
     expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000), 
     httpOnly: true 
    })