nodejs 封装jwt验证的中间件
时间: 2023-08-28 21:06:20 浏览: 100
jwt-middleware:NodeJS + Express + JWT + 中间件
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准(RFC 7519)。在Node.js中,我们可以使用jsonwebtoken模块来生成、解码和验证JWT。下面是一个封装JWT验证的中间件的示例代码:
```
const jwt = require('jsonwebtoken');
function authMiddleware(req, res, next) {
// 从请求头获取JWT
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({ message: 'Authorization header missing' });
}
try {
// 解码JWT
const decoded = jwt.verify(token, process.env.JWT_SECRET);
// 将解码后的数据存储到请求对象中
req.user = decoded;
next();
} catch (err) {
return res.status(401).json({ message: 'Invalid token' });
}
}
module.exports = authMiddleware;
```
在这个中间件中,我们首先从请求头中获取JWT,如果没有获取到则返回401错误。然后使用jsonwebtoken模块的verify方法解码JWT,如果解码成功则将解码后的数据存储到请求对象中,以便后续的路由处理程序使用。如果解码失败则返回401错误。最后,我们通过调用next()方法将请求传递给下一个中间件或路由处理程序。
阅读全文