npm 包 graphql-shield-rules 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

在 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


猜你喜欢

  • npm 包 prepack-webpack-plugin 使用教程

    随着前端技术的快速发展,Web 应用也变得越来越复杂。前端开发需要不断地学习新技术和工具,以提高开发效率和优化应用性能。其中,Webpack 是一个非常重要的工具,它可以让你打包、转换和优化前端资源。

    4 年前
  • npm 包@umijs/babel-plugin-auto-css-modules 使用教程

    摘要 本文将介绍 npm 包 @umijs/babel-plugin-auto-css-modules,这是一个在 UmiJS 框架中使用的插件,可以自动为 css 文件生成相应的 module,同时...

    4 年前
  • npm 包 gulp-preservetime 使用教程

    前言 在前端开发过程中,前后端分离的趋势越来越明显,而前端的工作流程利用到了不少技术类库来提高效率,其中 Gulp 是最受欢迎的构建工具之一。随着构建工具的普及,有时需要保留构建时间以确保它们与源代码...

    4 年前
  • npm 包 babel-plugin-try-import 使用教程

    前言 在前端开发中,我们经常会使用第三方库和插件来提高开发效率。其中,Babel 是一个非常重要的工具,能够将我们编写的 ES6+ 代码转换成浏览器可以解析的 ES5 代码。

    4 年前
  • npm包postcss-csso使用教程

    什么是postcss-csso? postcss-csso是一个可定制化的CSS处理工具,通常用于将CSS代码进行压缩和优化,以提高页面性能和加载速度。它是一款通过postcss插件来操作CSS代码的...

    4 年前
  • npm 包 yarn-global 使用教程

    前言 在前端开发中,我们经常需要使用第三方依赖库来进行代码编写。npm 是目前前端项目中最常用的包管理器,它可以方便地管理项目中的依赖,使得开发者能够更加专注于业务逻辑的编写。

    4 年前
  • npm 包 scss-loader 使用教程

    在前端开发过程中,我们经常需要使用 SCSS 这类 CSS 预处理器来帮助我们更高效地编写样式表。而 scss-loader 就是一个非常实用的 npm 包,它可以很方便地将 SCSS 文件转换成 C...

    4 年前
  • npm 包 react-router-cache-route 使用教程

    简介 react-router-cache-route 是一个 React Router 缓存路由的 npm 包。它的作用是在 React Router 中缓存已经访问过的页面,避免不必要的重复渲染,...

    4 年前
  • npm 包 timeago-react 使用教程

    时间是一个非常重要的概念,对于网页应用而言,对时间的处理也是至关重要的一环。在前端开发中,我们通常使用 timeago-react 包来处理时间的显示问题。它提供了一个轻量级的时间处理库,可以帮助我们...

    4 年前
  • npm 包 changelog-verify 使用教程

    作为前端开发者,我们每天都需要与大量的依赖包打交道。一个好的依赖包不仅要解决问题,更要易于维护。而一个易于维护的依赖包必然需要一个完整、详细的变更日志。本文将介绍一款 npm 包 changelog-...

    4 年前
  • npm 包 bitbucket-url-from-git 使用教程

    在前端开发过程中,我们经常需要使用各种第三方库来加速开发,其中许多库都通过 npm 进行管理和发布。npm 上有很多非常实用的 npm 包,其中一个常用的包就是 bitbucket-url-from-...

    4 年前
  • npm包version-changelog使用教程

    1. 简介 在开发过程中,经常需要发布新版的npm包,同时也需要记录每个版本的更新内容,以便开发者和使用者了解本次发布的更新信息。此时,一个好用的自动化工具就显得尤为重要。

    4 年前
  • npm 包 webpack-theme-color-replacer 使用教程

    在前端开发中,我们经常需要为网站或应用程序设计主题。经常变换主题使网站更具吸引力同时也可以与其他品牌或团队的网站区分开来。Webpack 的一个插件,webkit-theme-color-replac...

    4 年前
  • npm 包 choerodon-ui-font 使用教程

    简介 choerodon-ui-font 是一个基于 Font Awesome 的图标库,但更加符合 Choerodon 风格的图标库。该库提供了一系列 Choerodon 风格的图标,可用于前端项目...

    4 年前
  • npm 包 dom-lib 使用教程

    概述 dom-lib 是一个基于原生 DOM API 封装的 JavaScript 库,可以简化前端开发过程中 DOM 操作的代码编写和调用。该库可通过 npm 安装,使用前需要先安装并引入。

    4 年前
  • npm 包 smooth-scroll-into-view-if-needed 使用教程

    一、什么是 smooth-scroll-into-view-if-needed smooth-scroll-into-view-if-needed 是一个滚动到元素的 npm 包,允许页面平滑滚动到一...

    4 年前
  • npm 包 bisheng-plugin-choerodon-ui 使用教程

    简介 Bisheng 是一个基于 React 的静态页面生成工具,可以将 Markdown 编写的文档转化成静态网站,适用于技术文档、个人博客等各种场景。而 bisheng-plugin-choero...

    4 年前
  • npm 包 choerodon-ui 使用教程

    在前端开发中,我们经常需要使用一些成熟的 UI 组件库,用于快速地搭建 Web 应用程序的界面。npm 是 Node.js 的包管理器,在其中我们可以找到许多优秀的 UI 组件库。

    4 年前
  • npm 包 @ant-design/css-animation 使用教程

    随着前端开发的不断发展,CSS 动画变得越来越常见。但是,使用原生 CSS 动画并非易事,而且通常需要写大量的 CSS 代码。这就是为什么有许多优秀的 CSS 动画库和框架,如 @ant-design...

    4 年前
  • npm 包 @nexus/logger 使用教程

    什么是 @nexus/logger @nexus/logger 是一个针对 Node.js 应用程序的日志记录工具。它具有以下优点: 简单易用:只需要一行代码即可在应用程序中添加日志记录。

    4 年前

相关推荐

    暂无文章