@evanion/acl

中文文档
0.2.0发布于 2026/11/06MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 4766

在JS运行时间的任意运行中,一个声明性、可序列化的访问控制矩阵被编写一次并在当地进行评估:节点后端、前端SSR图、浏览器SPA或混合JS平台.

中文使用文档
文档目录5 节
  1. 能力地图
  2. 安装
  3. 安保合同
  4. 文档
  5. 许可证

@ evanion/ acl

始终如一的 本地授权 贯穿你整个堆.

大多数应用都受到"Authorization Bottleneck"的困扰:你要么为每个UI按钮和API端点做一个缓慢的网络回路,要么通过在前端和后端复制相同的逻辑来冒险脆弱的bug. @evanion/acl 通过让您将您的授权逻辑定义为一次可序列化的矩阵,并在本地- 在您的节点后端、 在您的 Next.js 服务器组件中或直接在浏览器中评估它来解决这个问题 .

import { hydratePolicy, policy } from '@evanion/acl';

type Shopper = { id: string; roles: string[] };
type Question = { id: string; askedBy: string };

const access = policy<Shopper, { question: Question }>()
  .for('question', (p) =>
    p.allow('delete', p.contains('subject.roles', 'bookseller')),
  )
  .build();

const bookseller = { id: 'staff-3', roles: ['bookseller'] };
const customer = { id: 'customer-41', roles: ['customer'] };
const question = { id: 'q7', askedBy: 'customer-41' };
// ---cut---
// The server sends the matrix as JSON text, and the browser rebuilds from it.
const json = JSON.stringify(access.matrix);
const inBrowser = hydratePolicy(JSON.parse(json));

inBrowser.can(bookseller, 'question', 'delete', question).allowed; // -> true
inBrowser.can(customer, 'question', 'delete', question).allowed; // -> false

能力地图

这个 @evanion/acl 软件包提供以下能力:

  • 地方决定: 决定是同步函数调用,没有 await 没有网络请求.
  • 单一真相来源: 前端和后端的答案来自与JSON一样被运出的一个矩阵.
  • 安全关闭失败: 默认不予批准;向建筑扔出错误的文件和未经处理的行动被拒绝.
  • 外地一级的控制: 使用 canFields 来决定用户可以更改的字段.
  • 环境不可知论:在浏览器和节点20+中运行;它只是没有运行时间或同行依赖性的无害环境管理.

安装

npm install @evanion/acl

安保合同

一个决定只有在像您的服务器这样的可信环境中运行才具有权威性; 在浏览器中相同 can 调用是咨询,只改变用户看到的。 每一层都由自己决定 并且不相信更早的人 因为矩阵船全向客户端,其名称和结构是一份公开文件;解决主题,涵盖每个访问路径,以及写出时间的再检查仍然是您申请的工作. 整个担保合同是在 警卫 报告 安全页面。 。 。 .

文档

如欲深入安全模式、实地许可、综合指南等

👉 libs.evanion.com/docs/acl (中文(简体) )

许可证

麻省理工学院

版本与发布记录

@evanion/acl 共发布 4 个版本,首次发布于 2026/09/28;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/11/067 天前
0.1.22026/11/067 天前
0.1.12026/10/1826 天前
0.1.02026/09/281 个月前

关于 @evanion/acl 的常见问题

@evanion/acl 是什么?

在JS运行时间的任意运行中,一个声明性、可序列化的访问控制矩阵被编写一次并在当地进行评估:节点后端、前端SSR图、浏览器SPA或混合JS平台.

如何安装 @evanion/acl?

在项目目录运行 npm install @evanion/acl,或使用 pnpm add / yarn add / bun add。

@evanion/acl 支持 TypeScript 吗?

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

@evanion/acl 支持 ESM 还是 CommonJS?

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

@evanion/acl 需要什么版本的 Node.js?

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

@evanion/acl 可以商用吗?

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

@evanion/acl 的下载量有多少?

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

@evanion/acl 还在维护吗?

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