2015-04-14 58 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 
    })