npm 包 @authorization/full 使用教程

简介

@authorization/full 是一个 npm 包,它提供了一种简单的方式来实现权限控制,包括身份验证、授权、角色和权限管理。本教程将介绍如何使用 @authorization/full。

安装

在命令行中输入以下命令来安装 @authorization/full。

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

快速上手

首先,让我们创建一个基本的应用程序,它将使用 @authorization/full 来实现身份验证和授权。可以使用以下命令来创建一个新的应用程序:

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

我们将使用 Express 框架来创建应用程序。

现在,创建一个名为 index.js 的新文件,并添加以下代码:

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

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

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

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

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

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

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

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

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

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

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

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

在这个例子中,我们定义了两个用户:alice 和 bob,并分配了不同的角色。我们还定义了两个路由:/admin 和 /user,使用 auth.role() 创建了两个处理程序:adminOnly 和 userOnly。这些处理程序将检查当前用户是否有所需的角色,并在用户没有足够权限的情况下返回 403。

我们使用 express.json() 中间件来解析 JSON 请求体,并使用 auth.useToken() 在路由处理程序之前验证令牌。

现在可以使用以下命令来启动应用程序:

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

现在打开浏览器并访问 http://localhost:3000/user。由于没有提供令牌,将返回 401。

使用 curl 或其他 HTTP 客户端来模拟用户登录:

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

这将返回一个包含访问令牌的 JSON。

现在再次访问 http://localhost:3000/user,并在请求头中添加 Authorization: Bearer 。

您应该看到 Hello user 的消息。现在访问 http://localhost:3000/admin 会返回 403,因为 alice 用户没有 admin 角色。如果使用 bob 用户登录,并使用相应的令牌访问 /admin,您将看到消息 Hello admin。

使用指南

配置

您可以使用 auth.configure() 方法配置 @authorization/full。这些配置选项包括:

  • jwtSecret: 用于签署和验证 JWT 的密钥。
  • tokenExpiration: 令牌过期时间(秒数)。
  • roles: 角色和相应的权限。
----- ---- - -----------------------------------

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

身份验证

要使用 @authorization/full 进行身份验证,可以使用 auth.createToken() 创建包含用户名和过期时间的 JWT。要验证令牌,可以使用 auth.verifyToken()。

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

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

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

授权

要使用 @authorization/full 进行授权,可以使用 auth.role() 创建相应的角色。每个角色都包含一组权限,并且可以使用 auth.role().handler() 创建一个路由处理程序,用于验证当前用户是否具有所需的角色和权限。这些角色和权限通常在应用程序启动时配置。

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

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

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

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

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

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

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

自定义角色

如果默认角色不能满足您的要求,可以使用 auth.createRole() 创建自定义角色。创建角色时,您可以指定角色名称、父角色、权限和权限集。

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

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

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

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

要创建一个自定义角色,请使用 auth.createRole()。该方法接受一个名称和一个可选的选项对象。选项对象可以包括以下字段:

  • parent: 父角色的名称或角色对象。
  • permissions: 一个或多个权限。

要从自定义角色创建处理程序,请使用 auth.role() 并传递自定义角色名称。

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

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

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

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

自定义权限

如果默认权限无法满足您的需要,可以使用 auth.createPermission() 创建自定义权限。

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

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

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

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

要创建自定义权限,请使用 auth.createPermission()。该方法接受一个字符串作为参数,该字符串表示自定义权限的名称。

您可以基于自定义权限创建自定义角色。

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

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

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

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

示例代码

完整的示例代码可以在 Github 仓库 中找到。

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


猜你喜欢

  • npm 包 @cicorias/msal 使用教程

    近年来,随着云计算技术的普及,前端对于身份验证和授权的需求日益增加。Microsoft 在这一领域也推出了多款与 Azure Active Directory 相关的认证产品,其中就包括 Micros...

    3 年前
  • npm 包 material-wallpaper-generator 使用教程

    在前端开发中,我们经常需要使用各种 UI 库、组件库,以提高开发效率。其中 Material Design 是一种流行的设计语言,其设计风格简洁、美观,被广泛应用于各类应用程序中。

    3 年前
  • npm 包 ngx-iq-bootstraptable 使用教程

    在前端开发中,表格是一个不可或缺的组件。ngx-iq-bootstraptable 是一个基于 Bootstrap 框架的 Angular 表格组件,并且可以使用 npm 包进行安装和使用。

    3 年前
  • npm包piper-process使用教程

    在Web开发中,前端技术是必不可少的一部分。随着前端技术的不断发展,我们可以使用越来越多的工具和框架来提升我们的开发效率。其中一个很有用的工具就是npm包piper-process。

    3 年前
  • npm 包 dnd-upload 使用教程

    介绍 dnd-upload 是一个基于 React 的 npm 包,可以让用户通过拖拽文件来上传文件,同时支持上传前对文件类型和大小的校验。 安装 可以通过 npm 或 yarn 来安装 dnd-up...

    3 年前
  • npm 包 rkgraph 使用教程

    前言 在前端开发中,数据可视化是常常需要解决的问题之一。而 rkgraph 是一个基于 D3.js 的开源数据可视化组件库,提供了多样的图表类型和自定义配置选项,适用于大部分数据可视化场景。

    3 年前
  • npm 包 choo-analytics 使用教程

    在前端开发中,我们通常需要对网站访问进行分析,以便优化用户体验和网站性能。而 choo-analytics 就是一个非常实用的 npm 包,可以帮助我们快速地接入 Google Analytics,以...

    3 年前
  • npm 包 pingy-scaffold-bootstrap 使用教程

    在前端开发领域中,我们常常需要使用各种工具和库来辅助我们完成开发任务。npm 是一个很常用的包管理工具,在其中有许许多多优秀的 npm 包可以用来提高我们的工作效率。

    3 年前
  • npm 包 cirrusdb 使用教程

    前言 在前端开发中,有很多依赖包可以提高我们的工作效率。而 cirrusdb 是一款轻量级的、用于在前端中存储数据的 npm 包。本文将介绍 cirrusdb 的使用方法,并提供详细的代码示例。

    3 年前
  • npm 包 stent-dev-tools-emitters 使用教程

    在前端开发中,我们经常需要使用各种 npm 包来协助我们完成一些重要的工作。stent-dev-tools-emitters 就是其中之一。它是一款用于实现前端状态管理的工具,能够帮助我们简化代码逻辑...

    3 年前
  • npm 包 webuploader-for-aid 使用教程

    前言 在前端开发过程中,文件上传是一个非常常见的需求。而 webuploader-for-aid 是一个基于 WebUploader 的文件上传插件,它能够帮助我们轻松地实现高效、可靠、自适应的文件上...

    3 年前
  • npm 包 prebid-mobile-react-native 使用教程

    前言 前端作为一门快速发展的技术,涵盖的领域非常广泛,从基础的网页开发到复杂的移动端与后台数据交互,无处不在。在现代化的网页技术中,流量变现是关键的一环。为了解决这个问题,我们可以通过标准化的广告需求...

    3 年前
  • npm包electron-notify-service使用教程

    什么是electron-notify-service? electron-notify-service是一个npm包,它提供了一种在Electron应用程序中展示用户通知的简单方法。

    3 年前
  • NPM 包 @gongzza/vue-property-decorator 使用教程

    简介 随着 Vue 项目的复杂度越来越高,业务逻辑也变得越来越复杂,Vue 组件的编写也变得越来越困难。此时,@gongzza/vue-property-decorator 包的出现为 Vue 组件的...

    3 年前
  • npm 包 babel-preset-muse 使用教程

    介绍 babel-preset-muse 是一个用于编译 ES6/ES7 代码的 babel 插件集合,它可以将你的源代码转换成更加兼容的 ES5 代码,使它可以在现代浏览器和旧版浏览器中运行。

    3 年前
  • npm 包 tdoc-cli 使用教程

    在前端开发中,文档是非常重要的资料。有了好的文档,我们可以更好地理解项目,更快地入手新的代码。tdoc-cli 是一个使用简单、功能强大的 npm 包,可以用于生成文档。

    3 年前
  • NPM 包 enotify 使用教程

    如果你是一名前端工程师,经常需要开发各种各样的应用,那么不可避免地就需要在应用中加入消息通知的功能。enotify 是一个基于 npm 包的轻量级 JavaScript 库,可以很方便地实现通知功能,...

    3 年前
  • npm 包 await-events 使用教程

    在前端开发中,我们经常需要在不同的事件之间进行等待、异步处理等操作。而 npm 包 await-events 可以方便地实现这些功能,使得我们的代码更加简洁、易读、易维护。

    3 年前
  • npm 包 usiri 使用教程

    前言 在前端开发中,我们经常需要进行字符串处理,这时就可以用到一个叫做 usiri 的 npm 包。 usiri 是一个快速、轻量级和可定制的字符串处理工具,其提供了一系列字符串相关的方法,包括大小写...

    3 年前
  • npm 包 angularjs-d3timeline 使用教程

    概述 angularjs-d3timeline 是一个基于 AngularJS 和 D3.js 的 npm 包,可以轻松地创建时间轴图表。该库封装了 D3.js 的可视化功能,提供了一个简单易用的 A...

    3 年前

相关推荐

    暂无文章