npm 包 @parthar/rbac 使用教程

角色基础访问控制 (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 角色从 userguest 角色继承了所有权限。同样地,新的 readUser 角色从 user 角色继承了所有权限。由于现在 powerUser 角色拥有了 userguest 两个角色的权限,所以它也拥有了这两个角色的子权限。

最后,让我们看看 allowed 变量的值:

--------------------- -- ----

是的,这说明一个已经继承了一个或多个角色的用户访问一个受保护的路径权限将被合并。RBAC包自动进行角色继承和权限合并,你可以很方便地为你的应用程序保护数据。

总结

这篇文章我们介绍了 @parthar/rbac 这款RBAC实现的包,以及其如何被用在现有的应用程序中。这款包非常易于使用且强大,无论是在小型还是大型应用程序中。同时它也拥有角色继承的特色,这使得你可以更加灵活地为你的应用程序实现访问控制。

当然这只是一个很初步的教程,更多内容可以查看它的官方文档。去获取更多的RBAC知识并为你的应用程序提供一定的保护吧!

示例代码

完整的示例代码:

----- - ---- - - -------------------------

----- ------ - -
  ------ --------- ------- -------- ------------ ------------
  ------------ -
    -------- -
      ------ --------- ------- -------- ------------ ------------
    --
    --------- -
      ------ --------- ------- -------------
    --
    ---------- -
      ------ ----------
    --
  --
  ------------ -
    ---------- -------- ---------
    --------- ---------
  --
--

----- ----- - --------------
----- ---- - -
  ----- -------
  ------
--

----- ---- - --- -------------
----- ------- - ----- -------------- ----------

---------------------

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f8f238a385564ab6f21


猜你喜欢

  • npm包confugu使用教程

    前言 在前端开发中,我们经常需要使用一些配置文件来进行一些应用的配置管理,例如数据库配置、API请求地址、日志输出目录等。在开发过程中,我们会遇到各种写入配置文件的问题,例如写错字段、路径错误等等。

    3 年前
  • npm 包 gerrit 使用教程

    在前端开发中,代码审查是一个不可或缺的环节。gerrit 是一个能够协助团队进行代码审查的工具,通过 gerrit 可以进行代码的查看、评论、修复等操作,从而提高代码的质量和效率。

    3 年前
  • npm 包 require-newly 使用教程

    在前端开发中,包管理工具 npm 是必不可少的工具。其中很多的工具包可以加快我们开发的速度和效率。在这篇文章中,我们将会介绍一个非常实用的 npm 包:require-newly。

    3 年前
  • npm 包 tryOrDefault 使用教程

    介绍 在前端开发中,我们经常需要判断一个变量是否为空或未定义,然后选择性地执行不同的操作。在过去,我们一般通过若干行 if 语句或条件表达式来实现。但是,这样的代码很臃肿,对于可读性和代码质量影响较大...

    3 年前
  • npm 包 vuex-apollo 使用教程

    1. 前言 在 Vue.js 开发中,状态管理是必不可少的一部分,而 Vuex 是 Vue.js 官方推荐的状态管理工具。在一些情况下,我们需要将 Vuex 与 GraphQL API 结合使用,这时...

    3 年前
  • npm 包 @uikit/autoclosable 使用教程

    自动关闭(Autoclose)是一个常见的前端 UI 需求。当用户在页面上操作一些需要关闭的组件时,如弹出框或菜单等,通常我们希望这些组件在用户离开它们之后自动关闭。

    3 年前
  • NPM包cron-time使用教程

    简介 在前端开发中,我们经常需要编写一些定时任务。NPM包cron-time就是一个方便易用的定时任务处理工具。它可以帮助我们按照指定的时间表执行任务,实现自动化操作。

    3 年前
  • npm 包 date-tz 使用教程

    介绍 在前端开发中,日期时间是一个常见的问题。值得注意的是它们不受本地时区的影响。为了解决这个问题,有一个 npm 包 date-tz,它允许我们在处理日期时间时指定时区。

    3 年前
  • npm 包 @buzuli/encoding 使用教程

    介绍 @buzuli/encoding 是一款基于 JavaScript 的 npm 包,主要用于字符串与二进制数据之间的相互转换,支持多种编码格式。此包适用于前端开发者。

    3 年前
  • npm包 @rjoydip/un-install使用教程

    简介 @rjoydip/un-install是一个npm包,可以协助前端工程师在项目中简便地卸载依赖。 安装 @rjoydip/un-install 在终端中输入以下代码进行安装: --- -----...

    3 年前
  • npm 包 react-fancy-select 使用教程

    介绍 react-fancy-select 是一个强大并易用的 React.js 下拉菜单组件,其中提供了包括自定义选项搜索功能、可编辑文本输入、异步请求数据等功能。

    3 年前
  • npm 包 @lvchengbin/escape 使用教程

    前言 在编写前端代码过程中,我们经常需要对字符串进行转义或者反转义操作。这样的操作往往非常繁琐,而且容易出错。因此,有很多开发者都选择使用一些现有的库或者工具来进行字符串的转义操作。

    3 年前
  • npm 包 @mklabs/discord-li 使用教程

    前言 在前端开发中,很多时候我们需要使用一些第三方库来完成我们的项目需求。而 npm 包是一个非常方便的依赖管理工具,使得我们可以快速地引入所需的库。 在本文中,我们将介绍如何使用 @mklabs/d...

    3 年前
  • npm 包 coinone-api 使用教程

    Coinone 是韩国的一个比特币交易所,旨在为用户提供安全、可靠、高效的交易平台。npm 包 coinone-api 则是 Coinone 的官方 API 封装后的 JavaScript 包,可以帮...

    3 年前
  • npm 包 neo4j-handler 使用教程

    简介 Neo4j 是一个基于图的数据库管理系统,用于存储和处理关系数据。neo4j-handler 是一个可用于 Node.js 应用程序中的 npm 包,它提供了一个简单易用的接口,用于与 Neo4...

    3 年前
  • npm 包 @fabrix/spool-runkit 使用教程

    前言 在前端领域,使用 node.js 已经是必不可少的一部分。而 npm 则是 node.js 生态中最重要的一部分,是众多开发者互相协作和分享代码的平台之一。在使用 npm 时,经常会遇到需要使用...

    3 年前
  • npm 包 gherkin-to-mocha 使用教程

    在进行软件开发过程中,测试是个不可或缺的环节。测试的好坏直接关系到软件的质量,而测试用例的编写则是测试的核心。最近,一款名为 gherkin-to-mocha 的 npm 包应运而生,它能够将 Ghe...

    3 年前
  • npm 包 react-native-iconfont-pmo 使用教程

    介绍 react-native-iconfont-pmo 是一款 React Native 中使用阿里云 Iconfont 的组件库,可以方便的使用图标字体。本教程将介绍如何使用该库。

    3 年前
  • npm 包 squash-object 使用教程

    Squash-object 是一种非常有用的工具,它可以将 JavaScript 对象中的多级嵌套属性整合为单层属性。这使得对象更容易被序列化,传输和存储。在前端开发中,它可以帮助我们更有效地组织和处...

    3 年前
  • npm 包 @dmartss/polisher 使用教程

    简介 @dmartss/polisher 是一个基于 postcss 的 CSS 处理工具,它可以自动优化 CSS 代码,去除冗余的样式,减小 CSS 文件的大小,提升页面加载速度。

    3 年前

相关推荐

    暂无文章