@companieshouse/node-session-handler

中文文档
5.2.23发布于 2026/11/02MITTypeScriptCommonJS近 30 天下载 2432

公司大厦节点会务经理

中文使用文档
文档目录9 节
  1. 兼容的节点.js 版本
  2. 先决条件
  3. 怎样用
  4. 会议
  5. 会话
  6. 会话中软件
  7. 保证会议Cookie 中枢软件
  8. 发展
  9. 定点测试

节点会议处理器

模块提供了处理公司众议院会议的方式.

模块提供以下文物:

  • Session 反映会议结构,包括 " 单一标志 " 的要素
  • SessionStore 负责从 / 到数据库读取和写入会话数据, 负责数据编码/ 解码
  • SessionMiddleware 以请求 cookie 为基础, 提供简单使用 express.js 中间软件读取会话

兼容的节点.js 版本

这个软件包已经升级,与Node v24兼容. 目前,它与v20和v18是相容的后向兼容,但相容性主要是v24的要求,因为所有的CH节点服务都在被升级到v24的过程中.

先决条件

模块要求 request.cookies 以 cookie 名称键入对象的地图。 通过使用 饼干派瑟 模块.

短期 npm install cookie-parser 命令以安装依赖性,并在应用程序中添加以下 snipt 来应用 cookie 剖析中间软件 :

import * as cookieParser from 'cookie-parser'
...
app.use(cookieParser())

注意: Cookie 解析必须在请求传递到会话中间软件之前进行.

怎样用

要将本模块作为依赖性,请将以下部分添加到 package.json数字 :

"@companieshouse/node-session-handler": "~4.1.0"

会议

会话课是围绕原始会话的包装 data: ISession (签字后从账户取出).

为了保持 ISession 类型一致,我们添加了一个额外的字段,叫做 extra_data (单位:千美元)SessionKey.ExtraData在会话中存储应用程序可能需要的任何数据,使会话本身可以扩展.

该类提供这些方法:

  • get<T = ISessionValue>(key: SessionKey): T | undefined - 允许检索在 SessionKey 代表所有可能类型但无法从会话中取回的enum
  • getExtraData<T>(key: string): T | undefined - 允许检索应用程序所覆盖的会话数据
  • setExtraData<T>(key: string, val: T): void - 允许修改应用程序使用的会话数据,替换现有值(如果有的话)
  • deleteExtraData(key: string): boolean - 从应用程序所覆盖的会话数据中删除密钥(如果存在)
  • verify = (): void - 确保会话有效,即包含正确的字段,而且不会过期

会话

会话存储提供了加载方式 SessionStore.load存储 SessionStore.store 删除 SessionStore.delete 来自数据库的会话,而不担心数据编码或解码.

所有上述方法都以 Cookie 类,具有会话ID和签名的组合。 使用这种参数类型有助于确保只为已核实的会话标识符进行数据库操作.

会话中软件

会话中间软件为express.js应用程序提供了方便的集成点. 中间软件有:

  1. 从请求 HTTP 信头读取 cookie 值
  2. 如果 cookie 有的话, 验证 cookie 签名
  3. 如果存在的话, 使用已校验的 cookie 从存储中装入会话
  4. 请求范围内已核实的会话
  5. 如果会话数据改变, 则在请求结束时存储会话

Express.js希望引入会话处理的应用程序应当以下列方式注册中间软件: 1


const sessionStore = new SessionStore(new Redis(`redis://${process.env.CACHE_SERVER}`))
const middleware = SessionMiddleware({
    cookieName: process.env.COOKIE_NAME,
    cookieDomain: process.env.COOKIE_DOMAIN,
    cookieSecureFlag: process.env.COOKIE_SECURE_ONLY,
    cookieTimeToLiveInSeconds: process.env.DEFAULT_SESSION_EXPIRATION,
    cookieSecret: process.env.COOKIE_SECRET
}, sessionStore)

app.use(middleware)

这样的程序就可以通过 request.session 只要我们.. __SID cookie 设定为校正值 .

还有一个选项是,在没有登录信息的情况下无法认证会话。 在这种情况下,只要请求中找不到有效的会话,中间软件就会产生空会话.

用于支持未认证的会话 true 作为中件厂函数的最后一个参数,例如:. SessionMiddleware(config, sessionStore, true)。 。 。 .

保证会议Cookie 中枢软件

方便快捷的中间软件功能,确保请求包含 如果不是会话 ID Cookie 并强制重定向 。 如果随后 中间软件需要 Cookie 出现在请求中 .

应当与 SessionMiddleware 并被安置在它的后面 在中间软件函数链中.

应采用下列方式:

// Create CookieConfig as required
const cookieConfig = { ... };

// Create sessionMiddleware using same cookie config, refer to previous section
// for explicit instructions
const sessionMiddleware = ...;
const ensureSessionCookiePresentMiddleware =
    EnsureSessionCookiePresentMiddleware({
        // Ensure use the same cookie name as session, spreading cookie config
        // will accomplish this
        ...cookieConfig,
        // Supply values for redirectHeaderName and redirectHeaderValue
        // to customise the header which is used to validate the redirected
        // request. (Defaults to name: `x-redirection-count` value: `1`)
        redirectHeaderName: "not-redirect",
        redirectHeaderValue: "not-true",
    })

app.use(sessionMiddleware)
app.use(ensureSessionCookiePresentMiddleware)

发展

模块需要可以通过 npm install 命令.

定点测试

代码是用 ts-lint 可通过 npm run lint 命令.

测试可依次通过 npm test 命令.

版本与发布记录

@companieshouse/node-session-handler 共发布 42 个版本,首次发布于 2020/09/26;过去 12 个月发布了 16 个版本。

版本发布日期距今
5.2.23latest2026/11/028 天前
5.2.222026/10/1229 天前
5.2.212026/10/081 个月前
5.2.202026/09/181 个月前
5.2.192026/09/181 个月前
5.2.182026/08/172 个月前

关于 @companieshouse/node-session-handler 的常见问题

@companieshouse/node-session-handler 是什么?

公司大厦节点会务经理

如何安装 @companieshouse/node-session-handler?

在项目目录运行 npm install @companieshouse/node-session-handler,或使用 pnpm add / yarn add / bun add。

@companieshouse/node-session-handler 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@companieshouse/node-session-handler 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@companieshouse/node-session-handler 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@companieshouse/node-session-handler 可以商用吗?

@companieshouse/node-session-handler 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@companieshouse/node-session-handler 的下载量有多少?

根据 npm 官方下载统计,@companieshouse/node-session-handler 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,432 次,日均约 81 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@companieshouse/node-session-handler 还在维护吗?

最新版本 5.2.23 发布于 2026/11/02(8 天前);至今共发布 42 个版本,其中过去 12 个月发布了 16 个;首次发布于 2020/09/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。