// 引入所需模块
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,以确保只有拥有有效凭证的用户可以访问该路由。这个例子教导了如何在实际应用中实现身份验证和授权。