【Node.js从基础到高级运用】身份验证与授权:JWT
// 引入所需模块
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
// 设置JWT密钥
const secretKey = 'your-secret-key';
// 创建登录接口,生成JWT
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 在这里应该添加用户验证逻辑
if (username === 'user' && password === 'pass') {
// 生成JWT
const token = jwt.sign({ user: username }, secretKey, { expiresIn: '1h' });
res.json({ token });
} else {
res.status(401).send('Invalid username or password');
}
});
// 中间件:验证JWT
const 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, secretKey, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
};
// 受保护的路由
app.get('/protected', authenticateToken, (req, res) => {
res.send('Hello ' + req.user.user + '!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这个示例代码展示了如何在一个简单的Express应用中使用JWT进行身份验证。在登录接口中,服务器验证用户凭据,并生成一个JWT。然后,在受保护的路由中,服务器验证这个JWT,以确保只有拥有有效凭证的用户可以访问该路由。这个例子教导了如何在实际应用中实现身份验证和授权。
评论已关闭