如何在 GraphQL 中处理 JWT 认证

阅读时长 3 分钟读完

GraphQL 是一种用于 API 的查询语言,它的出现大大简化了前后端交互的过程。在 GraphQL 中,使用 JWT 认证可以增加 API 的安全性,避免未经授权的访问。

本篇文章将介绍如何在 GraphQL 中处理 JWT 认证,包括生成 token,验证 token,以及在 Resolver 中使用 token。

生成 JWT Token

在 GraphQL 中,我们可以使用 jsonwebtoken 包来生成 JWT Token。首先安装该包:

这里生成了一个包含 userId 属性的 token,并使用 my_secret_key 作为密钥。如果用户想访问受保护的 GraphQL 查询或者 Mutation,需要在请求头中带上该 token。

验证 JWT Token

在请求进入服务器的时候,我们需要验证该 token 是否有效。这里我们可以使用 express-jwt 包来进行验证。首先安装该包:

在路由设置之前,我们需要通过 express-jwt 设置一个中间件来验证 token 的有效性:

secret 参数是用于生成 token 的密钥,algorithms 参数指定了使用的加密算法。

此时,如果请求头中不包含有效的 token,服务器将返回 401 Unauthorized 错误。

在 Resolver 中使用 JWT Token

如果请求中包含有效的 token,我们可以在 Resolver 中使用该 token 验证用户身份。首先,在客户端发送请求的时候,需要将 token 添加到请求头中:

在 Resolver 中获取 token:

这里获取了请求对象 req 中的 user 属性,该属性在验证 token 后由 express-jwt 中间件注入。

总结

本文介绍了如何在 GraphQL 中处理 JWT 认证,包括生成 Token,验证 Token,以及在 Resolver 中使用 Token。使用 JWT 认证可以增加 API 的安全性,避免未经授权的访问。本文所使用的示例代码可以参考以下链接:

示例代码

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646253c6968c7c53b039ea8a

纠错
反馈