Express 和 Redis 会话的过期时间

2024-03-23

我正在使用express和redis来使会话在我的系统上保持活动状态。我在设置 sessionCookie 上的 maxAge 时遇到一些问题。默认情况下,我读到的时间是 24 小时,但这对于保持其存活来说是很长的时间。我想设置大约 30 分钟,然后注销用户,我更改了 1 分钟以查看它是否有效,但没有任何反应,用户仍然登录。

这是我的会话功能:

module.exports.initSession = function(app, db) {
  app.use(session({
    saveUninitialized: true,
    resave: false,
    secret: config.sessionSecret,
    cookie: {
      maxAge: 30*10000,
      httpOnly: true,
      secure: Boolean(process.env.ssl) || true
    },
    key: config.sessionKey,
    store: new RedisStore({
      host: config.redis.host || 'localhost',
      port: config.redis.port || 6379,
      db: config.redis.database || 0,
      pass: config.redis.password || ''
    })
  }));
};

我也尝试使用 ttl 而不是 maxAge,但得到了相同的结果。会是什么呢?

EDITED:

I using SEAN.JS https://github.com/seanjs-stack/seanjs/会话内容的文件是这两个:快递.js https://github.com/seanjs-stack/seanjs/blob/master/config/lib/express.js and default https://github.com/seanjs-stack/seanjs/blob/master/config/env/default.js环境。


这是我的会话配置,它有效。
出于测试目的,我将过期时间设置为 5 秒。

app.use(session({
        store: new redisStore({
        host: 'localhost',
        port: 6379,
        client: redisClient,
        ttl: 5 // in seconds
    }),
    secret: 'this is secret',
    resave: false,
    saveUninitialized: true,
    // cookie: {maxAge: 5000}
}));

I set maxAge当我设置时它不起作用ttl有效。

Note:我测试发现ttl单位是秒,但 maxAge 单位是毫秒! (有点奇怪)

您可以使用如下中间件记录会话数据,以查看护照对象是否存在,如果会话数据中没有护照对象,则用户将被注销。

app.use((req, res, next) => {
    console.log('session:\n', req.session);
    next();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Express 和 Redis 会话的过期时间 的相关文章

随机推荐

  • IEnumerator 移回记录

    我有一个要求 我必须有记录来回 所以我使用 IEnumerator 来实现这一点 但我可以通过 movenext 前进 但无法后退 这是一种可以包装的方法IEnumerator
  • Rails,在form_for标签自定义文本中插入span标签

    我的问题是我想插入一个 span tag in form for label自定义文本 在正常的 html 代码中 它会是这样的 span
  • FBSDKGraphRequest 使用未声明的标识符

    虽然我已经导入了 FacebookSDK 例如 import
  • 403 - 禁止:访问被拒绝。 ASP.Net MVC [重复]

    这个问题在这里已经有答案了 可能的重复 IIS 7 中的 ASP MVC 导致 HTTP 错误 403 14 禁止 https stackoverflow com questions 1741439 asp mvc in iis 7 res
  • 用 INSERT / UPDATE 的单个查询替换循环

    我正在 PostgreSQL 中编写一个函数 它基本上执行 3 个步骤 从源表中获取一条记录 检查目标表中提取的记录的值 如果在目标表中找到记录 则使用提取的记录更新目标表的所有值 否则将提取的记录插入目标表 如果我写 而不是做这个循环单一
  • 防止多次点击按钮

    我有以下 jQuery 代码来防止双击按钮 效果很好 我在用Page ClientValidate 确保仅当页面有效时才阻止双击 如果存在验证错误 则不应设置标志 因为没有启动到服务器的回发 有没有更好的方法来防止在页面加载回来之前第二次单
  • 无法创建新的 Chrome 远程会话

    我正在尝试使用 Selenium Grid 启动新的 Chrome 浏览器 但最终出现以下错误 无法创建新的远程会话 所需功能 功能 browserName chrome version 55 0 2 platform WINDOWS 所需
  • 如何重命名 Excel 工作表?

    我有一个场景 我想更改电子表格中工作表的名称 我尝试使用创建电子表格ss Workbook 我认为这是用名为 Sheet 的工作表创建电子表格 我尝试使用以下格式更改工作表的名称 ss sheet ss get sheet by name
  • Realm 将数据追加到类型 List

    我正在尝试遍历数据并将其保存在我的模型中 但是无论我做什么 我都会收到以下错误 Can t mutate a persisted array outside of a write transaction 我究竟做错了什么 我将每场比赛附加到
  • “文本”和 new String(“文本”) 有什么区别?

    下面这两个陈述有什么区别 String s text String s new String text new String text 显式创建一个新的且引用不同的实例String目的 String s text 可以重用来自的实例字符串常
  • Coldfusion autosuggest 不适用于字符串中间的建议

    对于我的自动建议 我使用下面的代码 输入时 它只查看字符串的开头 例如 如果我输入 abcd 它会附带建议 abcde 这很好 但它没有做什么 如果我输入 def 并且在数据库中我有一个字符串 abcdefg 那么它不会出现在自动建议中 在
  • 在 CellTable 中添加并排序的行

    我想在添加新行时对 CellTable 中的行进行排序 为了标记 UI 我使用 UIBinder
  • 如何在浏览器中读取本地文本文件?

    我试图通过创建一个函数来实现一个简单的文本文件阅读器 该函数接受文件的路径并将每行文本转换为字符数组 但它不起作用 function readTextFile var rawFile new XMLHttpRequest rawFile o
  • 在 php 中,我应该在通常返回数组的方法中返回 false、null 或空数组吗?

    我发现了一些对此的回应 但没有一个与 PHP 这是一种极其弱类型的语言 有关 关于PHP 在通常会返回数组但发生失败的方法中返回 false null 或空数组是否合适 换句话说 如果另一个开发人员加入我的项目 他们会期望看到什么 数组是事
  • 更新以前的会话数组 Laravel

    我有一个问题 如何更新我以前的数组 我的代码目前发生的情况是它只是添加新的会话数组 而不是更新声明的密钥 这是我的代码 foreach items updated as key gt added if id added item id ne
  • Mat-table 的行具有不同的子行数

    尝试使用mat table指令 例如 matRowDef and multiTemplateDataRows构建一个表 其中每行可以有不同数量的子行 示例界面如下所示 interface ReportCard student string
  • Android:标题栏和 ActionBar 有什么区别

    我无法判断它们是否是同一件事 而且它们似乎有不同的方法来删除它们 但我不确定这些是否只是做同一件事的多种方法 那么有区别吗 如果有区别的话是什么 Ref https developer android com reference andro
  • 捕获粘贴输入

    我正在寻找一种方法来清理粘贴到浏览器中的输入 这可以用 jQuery 实现吗 到目前为止我已经想出了这个 this live pasteEventName function e this is where i would like to s
  • Go:JSON 封送错误

    我正在 Go 中构建 JSON API 我想以 json 形式返回错误响应 响应示例 error Invalid request syntax 我认为我可以创建一个实现错误接口的包装结构 然后使用 Go 的 json 封送拆收器作为获取错误
  • Express 和 Redis 会话的过期时间

    我正在使用express和redis来使会话在我的系统上保持活动状态 我在设置 sessionCookie 上的 maxAge 时遇到一些问题 默认情况下 我读到的时间是 24 小时 但这对于保持其存活来说是很长的时间 我想设置大约 30