fastify-jwt 怎么用
时间: 2024-12-02 20:22:38 浏览: 15
Fastify-JWT是一个用于Node.js应用程序的Fastify插件,它简化了JSON Web Tokens (JWT) 的处理过程。这个插件允许你在Fastify应用中验证、签发和解码JWT。以下是基本的使用步骤:
1. 首先,你需要安装fastify-jwt库:
```bash
npm install fastify fastify-plugin fastify-jwt
```
2. 然后,在Fastify应用初始化时注册插件,并提供必要的配置:
```javascript
const fastify = require('fastify')();
const jwt = require('fastify-jwt');
fastify.register(jwt, {
secret: 'your-secret-key', // 替换为你自己的JWT密钥
passReqToCallback: true, // 如果需要访问请求对象,设置为true
credentialsRequired: false, // 是否每次都强制验证JWT,默认为true
});
```
3. 在需要验证JWT的路由上,使用`reply.withToken()`方法返回一个新的JWT,或使用`preValidation`生命周期钩子检查JWT:
```javascript
fastify.get('/protected', async (request, reply) => {
const token = request.headers.authorization?.split(' ')[1]; // 从Authorization header获取token
if (!token) {
return reply.unauthorized('No JWT provided');
}
try {
const { user } = await jwt.verify(token, fastify.server.app.jwt.secret);
// 对请求进行操作...
return reply.json({ message: 'You are authenticated', user });
} catch (err) {
return reply.unauthorized(err.message);
}
});
// 或者使用预验证
fastify.preValidation((request, reply, done) => {
const token = request.headers.authorization?.split(' ')[1];
if (!token) {
done(new Error('No JWT provided'));
} else {
jwt.verify(token, fastify.server.app.jwt.secret, done);
}
}, { passThroughErrors: true });
```
阅读全文