express 验证 authorization的代码
时间: 2023-07-09 15:47:14 浏览: 48
下面是一个示例代码,使用 Express 和 jsonwebtoken 库实现验证 Authorization 头部的 JWT token。
```javascript
const jwt = require('jsonwebtoken');
const express = require('express');
const app = express();
// 中间件函数用于验证 Authorization 头部的 JWT token
function verifyToken(req, res, next) {
// 获取 Authorization 头部的值
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
// 如果 Authorization 头部不存在或格式不正确则返回 401 错误
if (!token) {
return res.status(401).json({ error: 'Unauthorized' });
}
try {
// 验证 JWT token 是否有效
const decoded = jwt.verify(token, 'secret_key');
req.user = decoded;
next();
} catch (err) {
// 验证失败则返回 403 错误
res.status(403).json({ error: 'Forbidden' });
}
}
// 使用中间件函数验证路由
app.get('/protected', verifyToken, (req, res) => {
res.json({ message: 'Hello World' });
});
// 监听端口
app.listen(3000, () => {
console.log('Server started on port 3000');
});
```
在上面的代码中,`verifyToken` 中间件函数用于验证 Authorization 头部的 JWT token。在 `verifyToken` 函数中,首先获取 Authorization 头部的值,然后验证 Authorization 头部是否存在或格式是否正确。如果验证通过,则将解密的 payload 数据存储在 `req.user` 中并调用 `next()` 函数以继续路由处理。如果验证失败,则返回 403 错误。
接着,在 `/protected` 路由中使用 `verifyToken` 中间件函数来验证请求是否有有效的 JWT token。如果验证通过,则返回一个简单的 JSON 响应。否则,会返回 401 或 403 错误。