# @adminforth/user-sessions 中文文档

规范地址：https://npmcn.com/package/%40adminforth/user-sessions/

版本：2\.6\.0
npm 元数据更新时间：2026-11-06T17:33:00.791Z
中文译文更新时间：2026-11-08T09:52:01.735Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40adminforth/user-sessions
原文对照：https://npmcn.com/package/%40adminforth/user-sessions/?lang=original
项目主页：https://adminforth.dev/docs/tutorial/Plugins/user-sessions/
源码仓库：https://github.com/devforth/adminforth-user-sessions

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：68.7 kB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：adminforth ^4\.24\.0
- 首次发布：2026-09-21T14:35:42.607Z
- 最新版本发布：2026-11-06T17:33:00.588Z
- 近 30 天下载量：1820（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 18 个）

## 中文简介

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

## 安装

```sh
npm install @adminforth/user-sessions
```

也可以使用：`pnpm add @adminforth/user-sessions`、`yarn add @adminforth/user-sessions`、`bun add @adminforth/user-sessions`

## README

# 管理员用户会话插件

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

完整文档: [adminforth.dev/docs/torial/Plugins/用户会议](https://adminforth.dev/docs/tutorial/Plugins/user-sessions/)

## 安装

```bash
npm i @adminforth/user-sessions @adminforth/key-value-adapter-redis --save
```

```ts
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`。 。 。 . 同一块随后出现在用户资源的显示页面:

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

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

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

## 发展

```bash
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 是什么？

管理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 和提交记录判断。

