npm 包 @e-me/feathers-awesome-permissions 使用教程

阅读时长 10 分钟读完

Feathers 是一个实时Web框架,它提供了构建现代Web应用的工具和API。@e-me/feathers-awesome-permissions 是Feathers的一个npm包,它提供了一种简单而强大的方式来管理系统中的权限。

在本文中,我们将学习如何使用@e-me/feathers-awesome-permissions npm包来实现Feathers应用的权限管理。我们将介绍如何安装和配置这个npm包,如何定义角色和权限,如何在服务和钩子中使用这些角色和权限,以及如何测试这些设置。

安装和配置

首先,我们需要安装@e-me/feathers-awesome-permissions npm包。我们可以通过运行以下命令来安装最新版本的npm包:

然后,我们需要在我们的Feathers应用程序中配置@e-me/feathers-awesome-permissions。为了实现这一点,我们必须在app.js文件中添加以下代码:

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

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

-- ---

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

在这里,我们首先导入了Feathers和express。然后,我们导入了@e-me/feathers-awesome-permissions库。最后,我们将应用程序配置为使用这个库。

定义角色和权限

现在,我们已经安装和配置了@e-me/feathers-awesome-permissions npm包,我们需要定义我们的角色和权限。在@e-me/feathers-awesome-permissions中,我们可以通过角色对象和权限对象来定义它们。

我们可以定义多个角色和权限,每个角色都有一组特定的权限。我们可以在我们的app.js文件中定义它们,如下所示:

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

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

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

-- ---

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

在这里,我们首先定义了一个roles对象,其中包含了三个角色的名称和权限。然后,我们定义了一个permissions对象,该对象控制哪些角色可以执行哪些操作。

我们可以在每个角色中指定一组can权限,每个can权限都是一个数组,包含角色可以执行的操作列表。我们还可以在每个角色中指定一个inherits属性,该属性是一个数组,包含角色应该继承的其他角色。

同时,我们可以在每个权限中指定一组授权规则,以控制哪些角色可以执行该权限。其中,*表示所有角色,而owner表示一个特定的角色,该角色通常是资源的所有者。

在服务和钩子中使用角色和权限

现在,我们已经定义了我们的角色和权限,我们需要在服务和钩子中使用它们。为了实现这一点,我们需要使用Feathers的钩子机制。

在我们的服务中,我们可以使用@e-me/feathers-awesome-permissions库提供的permit钩子,如下所示:

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

-- ---

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

在这里,我们引入了Feathers的authenticate钩子,以确保只有经过身份验证的用户才能访问服务。然后,我们引入了@e-me/feathers-awesome-permissions库中的permit钩子,该钩子使用我们之前定义的权限来控制服务的操作。

我们使用permit('create')钩子,这意味着只有具有create权限的角色才能创建消息。我们可以使用同样的方式来设置其他操作的权限。

在我们的钩子中,我们可以使用check权限,如下所示:

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

-- ---

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

在这里,我们使用了check钩子来检查角色或所有者是否有更新消息的权限。我们使用了isRoleOrOwner选项,这意味着只有具有admin角色或消息所有者的用户才能更新消息。

测试

现在,我们已经完成了我们的权限设置,并在我们的服务和钩子中使用了它们。我们需要测试这些设置是否正确。

为了测试,我们可以使用NockFeathers客户端来模拟服务器请求和客户端行为。

在我们的测试中,我们可以创建不同的用户和角色,并尝试执行不同的操作,以确保只有具有正确权限的用户才能执行操作。

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

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

-- ---

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在这里,我们首先定义了服务器和我们的Feathers应用程序。然后,我们实现了我们的测试,与创建用户和角色等相关设置无关。

在我们的测试中,我们首先使用createAccessToken方法创建一个授权令牌,并在每个测试之前传递该令牌。然后,我们使用不同的角色和权限尝试执行不同的操作来测试我们的设置。

结论

通过使用@e-me/feathers-awesome-permissions npm包,我们可以轻松地在我们的Feathers应用程序中管理权限。我们可以使用角色和权限对象来定义我们的设置,并在我们的服务和钩子中使用它们来控制访问。我们还可以使用测试来确保我们的设置是正确的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a730d0927023822676

纠错
反馈