简介
GraphQL-Rules是一个基于GraphQL的访问控制规则包,它允许您在GraphQL查询和突变中定义安全规则。这个包由AWS开发,旨在帮助开发人员通过定义规则以保护数据。
安装
您可以通过npm安装这个包,使用以下命令:
npm install graphql-rules
使用
GraphQL-Rules通过实现GraphQL的访问控制规则来保护您的数据。要使用GraphQL-Rules,您需要定义一些规则并将它们添加到您的GraphQL schema中。以下是一个简单的例子:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- - --------------- - - ------------------------------ ----- - ----- ------ - - ------------------------- ----- -------- - - ---- ----- - ------------ ------ - -- ----- --------- - - ------ - ------------ -- -- ------ -------- -- -- ----- ----------- - -------- ------ - ------------ --------------- ----- -------- ----- -- - ------ ------------ --- -------- --- -- --- ----- ------ - ---------------- ---------------------- --------- ---------- --- ------------ -- ----- ------- - ------------------- ----- ------------- - -------- ----- ----- - - ----- - ----------- - -- ----- ------- - - ----- -------- -- ----- ------ - ------------- ------- ------- ------ ------------- -------- --- ------------------------- -- - ------------ ------ ------- -
在上面的例子中,我们定义了一个查询“isProtected”,它被保护在一个规则中。这个规则检查context中的"user"是否等于"admin"。如果是,查询就被允许,否则就被拒绝。请注意,我们必须传递一个context,因为我们的规则需要访问它。
指南
GraphQL-Rules是一种非常强大的访问控制规则包,可以在GraphQL查询和突变中定义安全规则。它允许您通过控制访问来保护您的数据,从而使您的应用程序更加安全。以下是一些指南,帮助您更好地使用这个包:
定义规则
为了定义规则,您需要使用rule
函数。这个函数接受一个谓词作为参数。这个谓词接受四个参数:parent、args、context和info。这些参数代表了查询或突变的不同部分。
const myRule = rule()((parent, args, context, info) => { // 返回true或false });
在谓词函数中,您可以检查各种条件,以确定是否允许或拒绝查询或突变。
将规则添加到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