【问题标题】:sails.js Sessions - rememberme functionalitySails.js 会话 - 记住功能
【发布时间】:2015-06-20 12:06:50
【问题描述】:

我一直在尝试使用sails 实现记忆功能。我希望会话持续到浏览器关闭。但是,如果在用户登录时勾选了 rememberme 复选框,我希望会话持续 30 天。我从这里使用了记住我的护照策略: https://github.com/jaredhanson/passport-remember-me 但它最终位于sails session 的顶部,并且第一个调用的最终取代了另一个。

【问题讨论】:

  • 如果您使用sails-auth,passoprt.js 会话会自动保持活动状态。
  • 是的,我现在正在使用持久会话,但我想知道是否有办法动态控制 maxage。例如,在 /config/sessions 中将其设置为默认在窗口关闭或选项卡关闭时删除,除非勾选记住我复选框,然后将会话设置为持续 30 天。也许我不明白护照会话是如何与默认帆集成的。

标签: session sails.js remember-me


【解决方案1】:

基本上你可以自己设置cookie,手动设置过期时间

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

【讨论】:

    【解决方案2】:

    您可以在调用登录函数之前设置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) {
            ...
            }
    } 
    

    这感觉不太对劲,如果您在登录时发送了一些其他 cookie,也会影响它们的生命周期。

    但它确实有效,我也选择了它,因为查找与风帆相关的文件就像挖油一样。

    另外,我注意到 Passport 没有正确销毁会话,必须通过在注销控制器中调用 req.session.destroy(); 手动完成。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2012-12-04
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多