JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。这三部分之间用点(.
)分隔,形成一个完整的字符串。
JWT主要分为三种类型:
JWT广泛应用于Web应用、移动应用、API网关等场景,用于用户身份验证和授权。
以下是一个简单的示例,展示如何在Node.js中使用JWT验证路由。
首先,需要安装jsonwebtoken
和express
库:
npm install jsonwebtoken express
const jwt = require('jsonwebtoken');
const express = require('express');
const app = express();
// 密钥,用于签名和验证JWT
const SECRET_KEY = 'your-secret-key';
// JWT验证中间件
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (token == null) return res.sendStatus(401);
jwt.verify(token, SECRET_KEY, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
// 示例路由
app.get('/protected', authenticateToken, (req, res) => {
res.send(`Hello, ${req.user.username}! This is a protected route.`);
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
const token = jwt.sign({ username: 'exampleUser' }, SECRET_KEY, { expiresIn: '1h' });
console.log(token);
expiresIn
参数来控制令牌的有效期。SECRET_KEY
一致,并且在生成和验证令牌时使用相同的密钥。Bearer <token>
的形式。通过以上步骤,你可以在Node.js中实现JWT令牌验证路由的功能。
领取专属 10元无门槛券
手把手带您无忧上云