nesjt 用户验证 token jwt策略 代码
时间: 2024-04-21 12:26:04 浏览: 86
这里提供一个基于 Node.js 平台的 JWT 验证代码示例,使用 `jsonwebtoken` 库来实现:
```javascript
const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
// 生成 Token
function generateToken(user) {
const payload = {
id: user.id,
username: user.username,
role: user.role
};
return jwt.sign(payload, secretKey, { expiresIn: '1h' });
}
// 验证 Token
function verifyToken(req, res, next) {
const token = req.headers.authorization;
if (!token) {
return res.status(401).json({ message: 'Token not provided' });
}
jwt.verify(token, secretKey, (err, decoded) => {
if (err) {
return res.status(401).json({ message: 'Invalid token' });
}
req.user = decoded;
next();
});
}
// 在路由中使用 Token 验证
app.get('/api/users', verifyToken, (req, res) => {
// req.user 包含解析出来的用户信息
if (req.user.role !== 'admin') {
return res.status(403).json({ message: 'Access denied' });
}
// 处理业务逻辑
});
```
在这个示例中,`generateToken` 用于生成 Token,`verifyToken` 用于验证 Token,并将解析出来的用户信息存储在 `req.user` 中,供后续的路由处理函数使用。在路由中,可以通过访问 `req.user` 来获取当前用户的信息,并根据需要判断用户是否有访问该接口的权限。
阅读全文