npm 包 graphql-shield-rules 使用教程

阅读时长 5 分钟读完

在 GraphQL 应用中,常常需要进行权限校验,以保证数据安全性。本文章介绍了 npm 包 graphql-shield-rules 的介绍、使用方法以及示例代码,帮助大家快速上手 GraphQL 的权限校验。

什么是 graphql-shield-rules?

graphql-shield-rules 是一款基于 graphql-shield 封装的,用于简化配置的 GraphQL 权限校验工具。通过定义简洁的规则来控制 GraphQL 请求的合法性。

安装

如何使用

定义规则

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

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

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

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

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

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

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

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

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

以上代码定义了两个规则:isAuthenticated 和 isAdmin,分别用于判断用户是否已登录和是否拥有管理员权限。

应用规则

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

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

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

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

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

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

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

以上代码使用 graphql-middleware 将定义的规则应用到 GraphQL schema 中,实现对指定接口的权限校验。

示例查询

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

以上查询和 users 接口无关,isAuthenticated 规则会限制其访问。只有已登录用户才能访问 user 接口。

示例更改

以上更改操作和非管理员用户无关,isAdmin 规则会限制其访问。只有管理员用户才能访问 updateUser 和 deleteUser 接口。

总结

graphql-shield-rules 简化了 GraphQL 的权限校验操作,只需要简洁的规则定义,即可实现复杂的权限操作。本文章介绍了如何安装,定义规则以及如何应用规则的操作。希望对大家的学习和工作有所帮助。

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

纠错
反馈