前言
GraphQL 是一种用于 API 的查询语言,它使得客户端能够精确地描述它所需要的数据。GraphQL 已经成为了许多前端项目中的重要组成部分。但是,GraphQL 没有提供内置的身份验证和授权机制。因此,在创建 GraphQL API 时,我们需要考虑到这一问题。
create-graphql-server-authorization 是一个帮助您在 GraphQL 服务器中添加身份验证和授权机制的 npm 包。在这篇文章中,我们将探讨如何在您的项目中使用 create-graphql-server-authorization。
安装
要使用 create-graphql-server-authorization,您需要在项目中安装它。您可以使用以下命令行安装它:
npm install create-graphql-server-authorization --save
安装成功后,您需要在您的代码中导入它:
import { AuthorizationDirective } from 'create-graphql-server-authorization';
使用 AuthorizationDirective
AuthorizationDirective 是一个 GraphQL 指令,它定义了身份验证和授权机制。您可以将它添加到您的类型定义中:
directive @auth( requires: Role! = ADMIN ) on OBJECT | FIELD_DEFINITION
在上面的代码中,我们定义了一个名为 @auth 的指令,它在 OBJECT 和 FIELD_DEFINITION 上有效。它还定义了一个名为 requires 的参数,代表着用户需要的角色,默认为 ADMIN。
要使用此指令,您需要将其与您的 schema 中的类型一起使用。以下面的代码为例:
type Query { helloWorld: String! @auth(requires: ADMIN) }
在上面的代码中,我们定义了一个查询 helloWorld,它需要 ADMIN 权限才可被使用。
现在,每当一个用户尝试访问特定的查询时,它将会被验证用户身份和使用的角色是否符合。
示例代码
以下是一个完整的示例代码,您可以在其中测试 AuthorizationDirective:
-- -------------------- ---- ------- ------ - ------------- --- - ---- ---------------- ------ - ----------------------- ------------ - ---- -------------------------------------- -- --- ----- ----- - - - ----- ----- ----- ------- --------- ----------- --------- --------- -- - ----- ------ ----- -------- --------- -------- --------- -------- -- -- -- ------ ----- -------- - ---- --------- ------ --------- ----- - ---- - -- ------ - ---------------- ---- ---- - ---- ----- - ---- ---- - ----- ------- ----- ----- --------- ------- - ---- ----- - ------ ------ --------------- ------ --- ---- --------------- ----- - ---- -------- - ------ --------- ------- --------- ------- -- ------ - -- -- --- ----- --------- - - ------ - ------ -- -- ------ ------- --- -------- ----- ---- -- - ----- - ---- - - ---- ----- ---- - ------------------- ------ - ----- ---------- ----- --------- -------------- -- -- -- --------- - ------ -------- - --------- -------- -- -- - ----- ---- - ----------- ------ -- ------------- --- -------- -- ------------- --- --------- -- -- ------- - ----- --- -------------- ----- -------------- - ------ ------ ------------ -- -- -- -- ------ ------ ----- ------ - --- -------------- --------- ---------- -------- -- --- -- -- - ----- ----- - ------------------------- -- --- ----- ---- - ----------------- -- ------------- --- ------- ------ - ---- -- -- ----------------- - ----- ----------------------- -- --- ----------------------- --- -- -- - --------------- ------ ----- -- --------- ---
结论
create-graphql-server-authorization 是一个非常好用的 npm 包,可以帮助您快速地为您的 GraphQL 服务器添加身份验证和授权机制。当您的项目需要进行认证和授权时,它是您的一个不错选择。我们希望这篇文章对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005607881e8991b448dea21