角色基础访问控制 (RBAC) 是实现许多应用程序中对用户和对其控制的关键。RBAC 使得管理员可以分配一组操作和任务给一个或多个角色,然后将这些角色分配给用户或资源。这避免了将职责分配给单独的用户或资源,从而降低了维护工作,提高了安全性。
当我们在开发一些中到大型应用时,我们需要实现对我们机密用户数据的访问控制,这就需要用到@parthar/rbac
这款包,因为它在RBAC的实现中非常灵活和易于使用。另外,该包还具有用户友好的 API接口,它使得我们可以快速地为我们的应用程序实现RBAC。
如何安装
可以使用 npm
提供的命令行工具简化安装过程。你可以运行本命令:
--- ------- -------------
在这里, @parthar/rbac
是包的名称, npm install
是安装命令。
快速开始
首先,让我们如下导入并使用这个 @parthar/rbac
包:
----- - ---- - - -------------------------
然后呢?我们会创造一个配置、角色和用户,如下所示:
-- -- ----- ------ - - ------ --------- ------- --------- ------------ - -------- - ------ --------- ------- --------- -- --------- - ------ --------- -------- -- ---------- - ------ ---------- -- -- -- -- -- ----- ----- - --------- -- -- ----- ---- - - ----- ------- ------ --
config
对象由权限表和角色列表组成。 每个条目都是一个路径和一个对象,该对象包含一个或多个角色。 对象也可以有其他属性,这些属性在检查权限时可能很有用。 当应用程序对特定路径进行访问检查时,它将通过检查每个角色来确定它是否具有访问该路径的权限。
roles
数组是当前用户所属的角色。在实际使用中,该属性会由用户登录认证后得到。
然后,我们需要创建一个 RBAC
实例并对其调用授权方法:
----- ---- - --- ------------- ----- ------- - ----- -------------- ----------
can
方法接受两个参数: user
和路径。 它将检查给定 user
是否具有访问给定路径的权限。 如果用户具有访问权限,则返回值为 true
;否则为 false
。
最后,让我们看看 allowed
变量的值:
--------------------- -- ----
这意味着当前用户具有访问 '/write' 的权限。是的,这是多么简单和容易!
角色继承
RBAC 一个非常有用的功能是角色继承。 你可以创建一个新角色,并将其继承自一个或多个现有角色。 然后,你可以分配权限给新角色,并将它们分配给用户。当一个已经继承了一个或多个角色的用户访问一个受保护的路径时,这些权限将被合并并授权给该用户。
让我们看一个角色继承的例子:
-- -- ----- ------ - - ------ --------- ------- -------- ------------ ------------ ------------ - -------- - ------ --------- ------- -------- ------------ ------------ -- --------- - ------ --------- ------- ------------- -- ---------- - ------ ---------- -- -- ------------ - ---------- -------- --------- --------- --------- -- -- -- -- ----- ----- - -------------- -- -- ----- ---- - - ----- ------- ------ --
在上面的例子中,新的 powerUser
角色从 user
和 guest
角色继承了所有权限。同样地,新的 readUser
角色从 user
角色继承了所有权限。由于现在 powerUser
角色拥有了 user
和 guest
两个角色的权限,所以它也拥有了这两个角色的子权限。
最后,让我们看看 allowed
变量的值:
--------------------- -- ----
是的,这说明一个已经继承了一个或多个角色的用户访问一个受保护的路径权限将被合并。RBAC包自动进行角色继承和权限合并,你可以很方便地为你的应用程序保护数据。
总结
这篇文章我们介绍了 @parthar/rbac 这款RBAC实现的包,以及其如何被用在现有的应用程序中。这款包非常易于使用且强大,无论是在小型还是大型应用程序中。同时它也拥有角色继承的特色,这使得你可以更加灵活地为你的应用程序实现访问控制。
当然这只是一个很初步的教程,更多内容可以查看它的官方文档。去获取更多的RBAC知识并为你的应用程序提供一定的保护吧!
示例代码
完整的示例代码:
----- - ---- - - ------------------------- ----- ------ - - ------ --------- ------- -------- ------------ ------------ ------------ - -------- - ------ --------- ------- -------- ------------ ------------ -- --------- - ------ --------- ------- ------------- -- ---------- - ------ ---------- -- -- ------------ - ---------- -------- --------- --------- --------- -- -- ----- ----- - -------------- ----- ---- - - ----- ------- ------ -- ----- ---- - --- ------------- ----- ------- - ----- -------------- ---------- ---------------------
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f8f238a385564ab6f21