JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。它常用于用户身份验证,其中服务器生成一个token并返回给客户端,客户端在后续请求中携带此token以证明其身份。
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.json());
const SECRET_KEY = 'your-secret-key';
// 用户注册
app.post('/register', (req, res) => {
const { username, password } = req.body;
// 验证用户名和密码
// ...
// 假设验证通过
const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });
res.json({ token });
});
// 验证JWT
function verifyToken(req, res, next) {
const token = req.headers['authorization'];
if (!token) return res.status(403).send('Access denied.');
try {
const verified = jwt.verify(token, SECRET_KEY);
req.user = verified;
next();
} catch (error) {
res.status(400).send('Invalid token.');
}
}
// 受保护的路由
app.get('/protected', verifyToken, (req, res) => {
res.json({ message: 'This is a protected route.', user: req.user });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
通过以上步骤和示例代码,你可以实现一个基本的JWT用户注册和认证系统。在实际应用中,还需要考虑更多的安全性和性能优化措施。
领取专属 10元无门槛券
手把手带您无忧上云