Authzed 节点JS 客户端
这个寄存器存放了Authzed的NodeJS客户端库.
认证 是一个存储、计算和验证您的应用程序权限的数据库和服务.
开发者创建了一个模拟其权限要求的策略,并使用一个客户端库,比如这个策略,将策略应用于数据库,将数据插入数据库,并查询数据以高效地检查其应用程序中的权限.
支持客户端 API 版本 :
您可以在 API 上查找更多信息 经认证的API参考文件。 。 。 . 此外,Protobuf API文件可在以下网址上找到: Buf 注册 Authzed API 存储器。 。 。 .
见 捐款额 说明如何贡献和完成共同任务,例如建设项目和进行测试.
开始
我们强烈建议: 保护您的第一个应用程序 指南,以学习将应用程序与Authzed合并的最新最佳做法.
如果您对特定版本的API的示例感兴趣,请在数据库中的各自文件夹中找到 示例目录。 。 。 .
基本用途
安装
项目通过下列方式包装和分发: 国家预防机制。 。 。 .
如果您正在使用典型的 npm 工具链,安装库的命令是:
npm i @authzed/authzed-node
初始化客户端
连接和制作API呼叫所需的一切信息都位于一个与API版本相适应的模块中.
您必须提供自己的API Token 从[认证仪表板]取而代之 t_your_token_here_1234567deadbeef 实例如下:
import { v1 } from '@authzed/authzed-node';
// if your endpoint is localhost
// const client = v1.NewClient('t_your_token_here_1234567deadbeef', 'localhost:50051', v1.ClientSecurity.INSECURE_LOCALHOST_ALLOWED);
const client = v1.NewClient('t_your_token_here_1234567deadbeef');
或使用自定义证书权限, 加载 CA 证书并传递文件引用到 NewClientWithCustomCert。 。 。 .
import { v1 } from '@authzed/authzed-node';
import fs from 'fs';
const endpoint = 'localhost:50051';
const cert = fs.readFileSync('path/to/cert.pem');
const client = v1.NewClientWithCustomCert('t_your_token_here_1234567deadbeef', endpoint, cert);
执行 API 呼叫
因为这些类型的动词,我们建议自己写出功能/方法,从现有的应用模型中创建出这些类型.
这个 create 生成类上的方法将属性作为输入并默认其空值的未指定属性。 这使得您可以创建请求信件,例如只指定相关的字段,并留下可选字段为空.
import { v1 } from '@authzed/authzed-node';
const client = v1.NewClient('token')
// Create the relationship between the resource and the user.
const firstPost = v1.ObjectReference.create({
objectType: "blog/post",
objectId: "1",
});
// Create the user reference.
const emilia = v1.ObjectReference.create({
objectType: "blog/user",
objectId: "emilia",
});
// Create the subject reference using the user reference
const subject = v1.SubjectReference.create({
object: emilia,
});
const checkPermissionRequest = v1.CheckPermissionRequest.create({
resource: firstPost,
permission: "read",
subject,
});
client.checkPermission(checkPermissionRequest, (err, response) => {
console.log(response);
console.log(err);
});
承诺(同步/等待)支助
客户端的每一种可用方法都有相关的承诺式方法来代替回调,可以在 .promises 客户端上的财产.
import { v1 } from '@authzed/authzed-node';
const client = v1.NewClient('token');
const { promises: promiseClient } = client; // access client.promises
const checkPermissionRequest = /** from above **/;
const result = await promiseClient.checkPermission(checkPermissionRequest);
用于溪流回流方法,包括 client.readRelationships(), (中文(简体) ), client.lookupResources() 财务报告和审定财务报表 client.lookupSubjects(),承诺式方法会在溪流关闭后产生一系列响应对象.
import { v1 } from '@authzed/authzed-node';
const client = v1.NewClient('token');
const { promises: promiseClient } = client; // access client.promises
const results = await promiseClient.readRelationships(/** req **/);
console.log(results[0]); // first ReadRelationship result
写入洞穴
在写一个关系时,我们发现你需要使用
页:1 Struct 对象捆绑在一起 authzed-node,而不是从
页:1 google-protobuf 软件包。 如果你没有使用 authzed-node 版本中,
写上下文会默默地失败,关系也不会反映上下文.
一个例子是:
import { protobuf } from '@authzed/authzed-node';
const { Struct } = protobuf;
const writeRequest = WriteRelationshipsRequest.create({
updates: [
RelationshipUpdate.create({
relationship: Relationship.create({
resource: resource,
relation: "caveated_viewer",
subject: SubjectReference.create({
object: testUser,
}),
optionalCaveat: ContextualizedCaveat.create({
caveatName: "has_special_attribute",
context: Struct.fromJson({
special: true,
}),
}),
}),
operation: RelationshipUpdate_Operation.CREATE,
}),
],
});
const response = await client.writeRelationships(writeRequest);
所需资源
支持的Node.js版本:18,20,22
最小类型脚本版本 3.8