npm 包 @authorization/full 使用教程

阅读时长 10 分钟读完

简介

@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 <token>。

您应该看到 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

纠错
反馈