在前端开发中,认证是一个必不可少的部分。Jsonwebtoken 是一种安全的跨越各种语言和运行环境的实现方式。在 Fastify 应用中集成 Jsonwebtoken 的过程相对来说比较简单,下面将会详细介绍。
什么是 Jsonwebtoken?
Jsonwebtoken 也称 JWT,是一个非常受欢迎的认证方式,用于在不同服务之间传递安全的 JSON 对象。JWT 主要由三部分组成:header、payload 和 signature。header 包含了一些元数据,例如 token 类型和算法。payload 就是您想要在 token 中存储的数据。signature 用于验证 token 是真实的,而不是伪造的。
如何使用
安装依赖
安装依赖
npm install jsonwebtoken fastify-jwt
快速开始一下,我们需要先在 server.js
中将包引入。
// javascriptcn.com 代码示例 const Fastify = require('fastify') const fastifyJWT = require('fastify-jwt') const app = Fastify() // payload 的部分在这个 options 中定义 const jwtOptions = { secret: "jwtsecret", sign: { expiresIn: '2h' } } // jwt 的注册 app.register(fastifyJWT, { secret: jwtOptions.secret }) app.get('/token', function (request, reply) { const payload = { hello: 'world' } const token = app.jwt.sign(payload, jwtOptions.sign) reply.send({ token }) }) app.listen(3000, function () { console.log('server listening on port 3000'); })
以上代码的调用过程如下:
- 导入了
fastify-jwt
,我们定义jwtOptions
为我们的 payload 部分的选择 - 注册 fastify-jwt 插件,并提供密钥用于签名和验证 token
- 通过
app.jwt.sign(payload, jwtOptions.sign)
生成 JWT,将 token 作为回复的一部分返回。
接下来,您将在请求头中发送 token。
// javascriptcn.com 代码示例 const options = { headers: { Authorization: `Bearer ${token}` } } // 此处是 GET 请求路由 app.get('/user', function (req, res) { const user = req.user res.send(user) })
以上代码的调用过程如下:
- 添加了 HTTP 请求头 Authorization,使用 Bearer 方案将 token 传递到服务器。
- 注册后,您可以在请求对象的
user
属性中使用解码的 token。
有了以上代码,不要忘记在请求头中带上 token。
总结
在本文中,我们介绍了 Fastify 中使用 Jsonwebtoken 实现身份认证的方法。这种方式更为灵活,跨语言、跨平台,具有很强的可扩展性。快速开始,完成了 JSON Web Token 和 Fastify 的集成示例。此外,实现的样例代码也可以帮助您快速上手。希望本文乃至其样例代码可以为您的工作带来帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65472ec07d4982a6eb18d65d