@adminforth/user-sessions

中文文档
2.6.0发布于 2026/11/07MITTypeScriptES Module近 30 天下载 1820

管理Forth 插件, 显示管理员用户的活动会话, 并允许撤销它们

中文使用文档
文档目录4 节
  1. 安装
  2. 如何运作
  3. 选项
  4. 发展

管理员用户会话插件

显示管理员用户的活动会话( 每个浏览器签名一次) 并让他们取消 任何这样的会议。 日志删除也会取消会话, 因此其认证符号停止工作 而不是立即保持有效 直到它结束.

完整文档: adminforth.dev/docs/torial/Plugins/用户会议

安装

npm i @adminforth/user-sessions @adminforth/key-value-adapter-redis --save
import UserSessionsPlugin from '@adminforth/user-sessions';
import RedisKeyValueAdapter from '@adminforth/key-value-adapter-redis';

export const admin = new AdminForth({
  ...
  globalPlugins: [
    new UserSessionsPlugin({
      keyValueAdapter: new RedisKeyValueAdapter({ redisUrl: process.env.REDIS_URL }),
    }),
  ],
  ...
});

会话随后出现在用户菜单设置中的"主动会话"下.

要让特权用户看到并取消其他用户的会话,请添加 canManageOtherUsersSessions。 。 。 . 同一块随后出现在用户资源的显示页面:

new UserSessionsPlugin({
  keyValueAdapter,
  canManageOtherUsersSessions: async (adminUser) => adminUser.dbUser.role === 'superadmin',
})

没有这个选项,其他用户的会话就不会显示,也不能被任何人取消.

如何运作

  • AdminForth将一个独特的会话id放入每个已发行的JWT认证.
  • auth.afterSessionCreated 钩子店 <user pk>:<session id> 在键值适配器中 和符号一样过期,持有 ip, (中文(简体) ), country, (中文(简体) ), user_agent, (中文(简体) ), created_at 财务报告和审定财务报表 last_used_at。 。 。 .
  • auth.adminUserAuthorize 勾钩检查请求的会话是否仍然被存储,以及 刷新其内容 last_used_at未保存的会话以401被否决.
  • auth.beforeLogout 勾钩和撤销端点删除已存储的会话, 并删除一次 超过5秒后: 此时正在运行的请求可能已经读取过刚刚开始的会话 刷新时写回 last_used_at。 。 。 .

因为缺失的记录意味着"被撤销",商店必须活过应用过程:使用Redis(或 (b) 生产方面的另一个共同、持久的适应器。 每个重启的标志都有一个内膜适配器 全部用户退出。 安装插件也会标出所有在它之前登录过的人 .

没有会话 id 授权的请求—— MCP api 密钥, 或插件前发布的令牌 已安装——单独安装.

选项

选项默认说明
keyValueAdapter所需经费存储活动会话的地方
collectionadminforth-user-sessions适配器中使用的收藏( 键前缀)
countryHeaderCF-IPCountry由您的 CDN 设置的双字母国家代码标题 。 空字符串禁用
canManageOtherUsersSessions—— 说(adminUser) => Promise<boolean>。当返回真实时,该用户查看并可以取消用户显示页面上其他用户的会话
resolveCountry—— 说({ ip, headers }) => Promise<string | null>,当信头没有告诉国家时打来
lastUsedThrottleSeconds60多长时间 last_used_at 正在刷新, 每个刷新时写一个适配器

这个 Device 列显示浏览器和从存储中解析的 OS User-Agent (例如:. Chrome 131 on macOS)带有桌面/移动/平板图标。 生头如来被收贮,所以 分析总是运行在当前插件版本上.

客户端 IP 取自 adminforth.auth.getClientIp配置 auth.clientIpHeader 何时 运行在代理服务器后面——否则IP不可信,并且是 null 为私人地址.

发展

pnpm i
# hooks this plugin uses are not released yet, so point it at a local adminforth checkout
# (every `pnpm i` resets this link back to the published package)
pnpm link ../../adminforth
pnpm test
pnpm build

版本与发布记录

@adminforth/user-sessions 共发布 18 个版本,首次发布于 2026/09/21;过去 12 个月发布了 18 个版本。

版本发布日期距今
2.6.0latest2026/11/071 天前
2.5.02026/11/044 天前
2.4.02026/11/034 天前
2.3.12026/11/035 天前
2.3.02026/11/035 天前
2.2.12026/11/035 天前

关于 @adminforth/user-sessions 的常见问题

@adminforth/user-sessions 是什么?

管理Forth 插件, 显示管理员用户的活动会话, 并允许撤销它们

如何安装 @adminforth/user-sessions?

在项目目录运行 npm install @adminforth/user-sessions,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:adminforth(^4.24.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@adminforth/user-sessions 支持 TypeScript 吗?

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

@adminforth/user-sessions 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@adminforth/user-sessions 可以商用吗?

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

@adminforth/user-sessions 的下载量有多少?

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

@adminforth/user-sessions 还在维护吗?

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