npm 包 graphql-rules 使用教程

简介

GraphQL-Rules是一个基于GraphQL的访问控制规则包,它允许您在GraphQL查询和突变中定义安全规则。这个包由AWS开发,旨在帮助开发人员通过定义规则以保护数据。

安装

您可以通过npm安装这个包,使用以下命令:

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

使用

GraphQL-Rules通过实现GraphQL的访问控制规则来保护您的数据。要使用GraphQL-Rules,您需要定义一些规则并将它们添加到您的GraphQL schema中。以下是一个简单的例子:

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

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

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

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

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

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

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

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

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

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

在上面的例子中,我们定义了一个查询“isProtected”,它被保护在一个规则中。这个规则检查context中的"user"是否等于"admin"。如果是,查询就被允许,否则就被拒绝。请注意,我们必须传递一个context,因为我们的规则需要访问它。

指南

GraphQL-Rules是一种非常强大的访问控制规则包,可以在GraphQL查询和突变中定义安全规则。它允许您通过控制访问来保护您的数据,从而使您的应用程序更加安全。以下是一些指南,帮助您更好地使用这个包:

定义规则

为了定义规则,您需要使用rule函数。这个函数接受一个谓词作为参数。这个谓词接受四个参数:parent、args、context和info。这些参数代表了查询或突变的不同部分。

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

在谓词函数中,您可以检查各种条件,以确定是否允许或拒绝查询或突变。

将规则添加到GraphQL schema中

当您定义了规则之后,您需要将它们添加到您的GraphQL schema中。要做到这一点,您需要使用shield函数。这个函数接受一个对象作为参数,该对象有与GraphQL schema中定义的查询和突变相同的属性名称。这些属性名称的值应该是rule函数的调用。

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

在上面的例子中,我们定义了两个受保护的查询和突变。这些都是受到一个规则的限制,该规则只允许管理员用户访问。

访问控制

当您定义和添加规则之后,GraphQL-Rules将自动检查用户对查询或突变的访问权限。如果用户没有足够的权限,查询或突变将被拒绝。您可以通过传递一个context来告诉GraphQL-Rules当前用户。这个context可以是任何对象,它包含当前用户的信息。

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

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

在上面的例子中,我们传递了一个包含当前用户信息的context。当规则在处理查询或突变时,它将访问这个context,以确定当前用户是否有足够的访问权限。

结论

GraphQL-Rules是一个非常强大的访问控制规则包。它使得在GraphQL查询和突变中定义安全规则变得容易。您可以使用它来控制访问,以确保只有有权访问数据的用户才能访问它。如果您正在构建一个使用GraphQL的应用程序,并需要一种强大的访问控制解决方案,您应该考虑使用GraphQL-Rules。

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


猜你喜欢

  • npm 包 theme-customizer 使用教程

    简介 theme-customizer 是一个基于 npm 包的前端项目开发工具,可以方便地自定义主题样式。它可以支持多个主题风格以及自定义主题样式,具有使用方便、可扩展性强等优点,可以极大地提高开发...

    3 年前
  • npm 包 muplogin 使用教程

    muplogin 是一个用于 Meteor 部署的工具,它通过生成临时的密码认证用户并将其保存到 MongoDB 中,以便在开发和生产环境中让用户能够访问你的应用程序。

    3 年前
  • 使用 react-native-elements-testx 包的学习指南

    React Native 是一个非常流行的开源的跨平台移动应用开发框架,可以让开发人员使用一些常见的前端技术,如 JavaScript、CSS 样式等来开发移动应用。

    3 年前
  • npm包serverless-authentication-fork使用教程

    最近,前端开发人员越来越依赖于serverless框架以及与之相关的npm包。其中一个众所周知的工具是serverless-authentication-fork,它在serverless应用程序中允...

    3 年前
  • npm 包 hyper-pocillo-controls 使用教程

    在前端开发中,我们经常需要使用不同的 UI 组件来构建我们的页面。在这个过程中,npm 是一个非常重要的工具,它可以帮助我们获取和管理各种 JavaScript 库和框架。

    3 年前
  • npm 包 error-factory-js-testing 使用教程

    在前端开发中,我们必须处理各种各样的错误和异常,有时候会很棘手。为了更好地处理异常,我们介绍了一个 npm 包 error-factory-js-testing,它可以帮助我们轻松创建和处理各种异常和...

    3 年前
  • npm 包 memory-cache-decorator 使用教程

    在前端开发中,我们经常需要处理大量的数据,其中缓存是提升性能和用户体验的重要手段。memory-cache-decorator 是一个非常实用的 npm 包,它提供了一种装饰器模式来实现内存缓存,在处...

    3 年前
  • npm 包 saml-metadata-parser 使用教程

    前言 在前后端分离的 web 开发中,单点登录已经成为非常流行的认证方式。SAML(Security Assertion Markup Language)是一种基于 XML 的认证协议,也是实现单点登...

    3 年前
  • npm 包 `create-meteor` 使用教程

    create-meteor 是一个 NPM 包,用于快速创建一个 Meteor 应用程序的骨架,使用该包可以轻松快速地初始化一个新的 Meteor 项目。 本文将详细介绍 create-meteor ...

    3 年前
  • npm 包 create-snapshot-test 使用教程

    如果你是一名前端开发人员,肯定不会对单元测试这个话题陌生。而在单元测试过程中,快照测试(Snapshot Testing)是极为常见的一种测试方式。针对 React 组件,Jest 提供了快照测试的工...

    3 年前
  • npm 包 etsc-client-binaries 使用教程

    etsc-client-binaries 是一个针对前端开发的命令行工具,它支持 TypeScript 编译,该 npm 包可以在 TypeScript 环境中使用。

    3 年前
  • npm 包 hexo-tag-color-block 使用教程

    在前端开发中,颜色是经常用到的一种属性。如果想要在 Hexo 博客中添加颜色块,可以使用 npm 包 hexo-tag-color-block。本文将详细介绍如何使用这个包以及其深度和学习意义。

    3 年前
  • npm 包 v8-ic-processor 使用教程

    什么是 v8-ic-processor v8-ic-processor 是一个可以用于替代 V8 引擎内部代码优化的 JIT 编译器的工具。V8 引擎在进行代码优化的过程中,会通过内联缓存(Inlin...

    3 年前
  • npm 包 qun-base 使用教程

    什么是 qun-base? qun-base 是一个 npm 包,它提供了一些常用的 JavaScript 工具函数和 UI 组件,可以让前端开发人员更加高效地进行开发。

    3 年前
  • npm 包 @os33/ng2-tel-input 使用教程

    随着移动互联网的普及,电话号码成为了一种很常见的身份标识。在前端开发过程中,我们可能需要使用电话号码相关的控件。而 ng2-tel-input 则是一个好用的 Angular2+ 电话号码输入框组件。

    3 年前
  • npm 包 cx-react-grid-layout-grafana 使用教程

    在前端开发中,布局是一个非常重要的部分。而 cx-react-grid-layout-grafana 是一个非常优秀的 npm 包,可以帮助我们实现灵活多变的网格布局。

    3 年前
  • npm 包 latte_web_session 使用教程

    前言 随着互联网的发展,Web 框架也不断壮大,其中 Session 管理是 Web 框架中非常重要的一个组件,最常见的 Session 管理方式是通过 cookie 来进行管理。

    3 年前
  • npm 包 redux-effect-middleware 使用教程

    简介 redux-effect-middleware 是一个用于 Redux 的中间件,它允许您轻松地编写可重用的异步操作,并使您的代码更加易于维护和测试。这个中间件基于redux-thunk,并添加...

    3 年前
  • npm 包 seo-detect-test 使用教程

    前言 在当前互联网时代,网站优化是非常重要的一个环节。而评估一个网站的 SEO 优化效果,最基础也最有效的方法便是通过对其各项指标的检测。而对于前端来说,常常需要编写一些程序来对网站进行 SEO 评测...

    3 年前
  • wdio-mocha-bamboo-reporter 使用教程

    如果你在前端的自动化测试中使用 WebdriverIO 和 Mocha,那么 wdio-mocha-bamboo-reporter 这个 npm 包可以帮助你生成漂亮并且易于理解的测试报告。

    3 年前

相关推荐

    暂无文章