@cloudflare/authr

中文文档
3.0.0发布于 2020/11/27BSD-3-ClauseTypeScriptCommonJS近 30 天下载 26万

一个灵活的,表达性的,语言不可知的接入控制框架.

中文使用文档
文档目录4 节
  1. 开始中
  2. 为 authr 设置对象
  3. api 密码
  4. 可([标 、[行动]、[资源]):布尔

自动

一个令人难以置信的颗粒和表达性许可框架.

开始中

启动,安装软件包!

npm install --save @cloudflare/authr

为 authr 设置对象

尽管我们使用打字机来进行js执行,但我们必须能够与js相接,我们仍然需要保证authr处理的对象有专用于它的方法,我们需要JS接口。 但是由于Javascript没有这样的东西, 我们可以使用 符号。 。 。 .

符号有很多用法,但为了奥弗尔的目的,它保证某个对象已经明确执行特定功能,专门用于奥弗尔;有点像接口! 这些符号作为导出常数供包使用.

说明:a 数量 关于这个图书馆的哲学和内部工作的重要细节都被蒙蔽了. 如果您尚未读取主要读取内容,则强烈建议您这样做: 云层/自动/README.md

获取( R)

为了在这个系统中建立一个主题(也叫"actor"),这个常数的MUST是分配给可调用函数的对象的密钥. 当函数被调用时,它必须返回一组 Rule编号.

键入界面定义是:

interface ISubject {
    [GET_RULES](): Rule[];
}

在js中执行,它可能会 最终看起来像:

import { GET_RULES, Rule } from '@cloudflare/authr';

var user = {
    [GET_RULES]: () => ([
        Rule.allow({
            rsrc_type: 'zone',
            rsrc_match: [['@id', '=', '123']],
            action: ['delete', 'pause']
        }),
        Rule.deny({
            rsrc_type: 'private_key',
            rsrc_match: [],
            action: '*'
        })
    ])
};

一旦你有了这个, 你刚刚设置了一个主题 在自闭症框架! 主体是系统中能够针对具体资源采取行动的实体.

资源,有 两个 在对象上执行的符号使其成为可识别的资源.

获取资源 类型

此常数 MUST 是指定用于返回识别资源类型的字符串的可调用函数的对象的密钥 。 像这样:

import { GET_RESOURCE_TYPE } from '@cloudflare/authr';

var resource = {
    [GET_RESOURCE_TYPE]: () => 'zone'
};

很简单的功能,对吧? 许可框架中的“资源”是指能够采取行动的实体,例如区域(云浮对象),甚至用户.

获取资源( A)

此常数 MUST 是指定用于调用函数的对象的密钥 。 当函数被调用时,它将被赋予一个字符串参数,指定正在寻找的属性的密钥. 像这样:

import {
    GET_RESOURCE_TYPE,
    GET_RESOURCE_ATTRIBUTE
} from '@cloudflare/authr';

var resource = {
    [GET_RESOURCE_TYPE]: () => 'zone',
    [GET_RESOURCE_ATTRIBUTE]: k => {
        var attr = {
            'id': 123,
            'type': 'full'
        };
        return attr[k] || null;
    }
};

在对象中使用这两个常数时, 您刚刚在 authr 框架中设置了资源 !

别急! 符号像地狱一样是新的,不能被用在旧浏览器上!

嗯,是的,但有些不错的 嘘 能实现同样的目标 并不理想,但是,它得到了工作完成.

api 密码

当所有物体都已经就绪 并准备好它们的常数时, 你终于可以开始检查访问控制。 在这个框架内,只有一个方法可以做到这一点: can。 。 。 .

可([标 、[行动]、[资源]):布尔

这是自闭症的核心功能, 终极问题:"这能否 主题 执行此功能 动作 这上面 资源? 吗

为了得到这个问题的答案,我们必须把所有三个参数都通过这个功能

  • subject ISubject - 试图采取行动的主体(行为者)
  • action 字符串 - 正在尝试的动作
  • resource IResource - 受变化影响的资源

返回时 true 如果他们被允许 false 如果他们不是.

实例

import {
    can
    GET_RULES,
    GET_RESOURCE_TYPE,
    GET_RESOURCE_ATTRIBUTE,
    Rule
} from '@cloudflare/authr';

var admin = {
    [GET_RULES]: () => ([
        Rule.allow({
            rsrc_type: 'zone',
            rsrc_match: [['@status', '=', 'V']],
            action: '*'
        })
    ])
};

var user = {
    [GET_RULES]: () => ([
        Rule.allow({
            rsrc_type: 'zone',
            rsrc_match: [['@id', '=', '123']],
            action: ['init', 'delete']
        })
    ])
};

var zones = {
    '123': {
        [GET_RESOURCE_TYPE]: () => 'zone',
        [GET_RESOURCE_ATTRIBUTE]: k => {
            var attr = {
                'id': 123,
                'status': 'V'
            };
            return attr[k] || null;
        }
    },
    '567': {
        [GET_RESOURCE_TYPE]: () => 'zone',
        [GET_RESOURCE_ATTRIBUTE]: k => {
            var attr = {
                'id': 567,
                'status': 'V'
            };
            return attr[k] || null;
        }
    }
};

console.log(can(admin, 'delete', zones['123'])); // => true
console.log(can(user, 'delete', zones['567'])); // => false
console.log(can(admin, 'do_admin_things', zones['123'])); // true

版本与发布记录

@cloudflare/authr 共发布 7 个版本,首次发布于 2018/03/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.0latest2020/11/275 年前
2.0.02018/08/278 年前
1.1.22018/06/058 年前
1.1.12018/04/048 年前
1.1.02018/03/158 年前
1.0.12018/03/158 年前

关于 @cloudflare/authr 的常见问题

@cloudflare/authr 是什么?

一个灵活的,表达性的,语言不可知的接入控制框架.

如何安装 @cloudflare/authr?

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

@cloudflare/authr 支持 TypeScript 吗?

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

@cloudflare/authr 支持 ESM 还是 CommonJS?

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

@cloudflare/authr 可以商用吗?

@cloudflare/authr 使用 BSD-3-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括,不构成法律意见,请以许可原文为准。

@cloudflare/authr 的下载量有多少?

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

@cloudflare/authr 还在维护吗?

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