@resin/sbvr-types
是一个 NPM 包,它为使用基于角色的访问控制 (Role-Based Access Control, RBAC) 的业务应用程序提供了一个通用的数据模型。这个包是为任何需要使用基于角色的访问控制的业务应用程序设计的。
在本教程中,我们将介绍如何使用 @resin/sbvr-types
包,并了解如何将它应用到自己的项目中。
安装 @resin/sbvr-types 包
在您的 Node.js 项目中,可以通过运行以下命令来安装 @resin/sbvr-types
包。
npm install @resin/sbvr-types
使用 @resin/sbvr-types 包
首先,您需要在项目中引入 @resin/sbvr-types
包。
const sbvrTypes = require('@resin/sbvr-types');
接下来,您需要了解 @resin/sbvr-types
包中的几个关键对象和类型。
Role
Role
表示具有操作权限的用户角色。每个角色都有一个唯一的 roleId
和一个人类可读的名称 name
。
const adminRole = new sbvrTypes.Role('admin', 'Admin');
Resource
Resource
表示需要受到访问控制的资源或对象。每个资源都有一个唯一的 resourceId
和一个人类可读的名称 name
。
const usersResource = new sbvrTypes.Resource('users', 'Users');
Rule
Rule
表示角色与资源之间的操作规则。例如,Admin
角色可以执行 create
,read
,update
和 delete
操作,而 Users
资源只允许 read
操作。
const adminRule = new sbvrTypes.Rule(adminRole.roleId, usersResource.resourceId, ['create', 'read', 'update', 'delete']); const usersRule = new sbvrTypes.Rule('user', usersResource.resourceId, ['read']);
Schema
Schema
包含所有角色、资源和规则,可以通过 typeIds
属性访问。
const schema = new sbvrTypes.Schema([adminRole, usersRole], [usersResource], [adminRule, usersRule]);
然后,您可以使用 schema
对象来创建 Fact
对象,该对象将填充基于角色的操作规则并进行验证。
Fact
Fact
表示将被验证的用户操作。每个 Fact
对象应具有以下属性:
roleId
:执行操作的角色的唯一 ID。resourceId
:要访问的资源的唯一 ID。action
:用户请求执行的操作类型。
const fact = { roleId: 'admin', resourceId: 'users', action: 'create' };
Validator
Validator
对象使用 schema
对象和 fact
对象来验证用户操作是否合法。
const validator = new sbvrTypes.Validator(schema, fact); validator.validate() // 返回 true 或 false
示例
现在,让我们来看一个完整的示例,使用上述对象和类型来验证一个用户操作是否合法。
-- -------------------- ---- ------- ----- --------- - ----------------------------- ----- --------- - --- ----------------------- --------- ----- --------- - --- ---------------------- --------- ----- ------------- - --- --------------------------- --------- ----- --------- - --- -------------------------------- ------------------------- ---------- ------- --------- ----------- ----- --------- - --- -------------------------------- ------------------------- ---------- ----- ------ - --- ---------------------------- ----------- ---------------- ----------- ------------ ----- ---- - - ------- ------- ----------- -------- ------- -------- -- ----- --------- - --- --------------------------- ------ ---------------------------------- -- -- -----
在上面的示例中,user
角色试图执行 create
操作,但 users
资源只允许 read
操作,因此验证失败。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/192565