npm 包 graphql-rules 使用教程

阅读时长 5 分钟读完

简介

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

纠错
反馈