const jwt = require('jsonwebtoken'); const User = require('../models/User'); // 保护路由中间件 const protect = async (req, res, next) => { try { let token; // 从请求头中获取token if (req.headers.authorization && req.headers.authorization.startsWith('Bearer')) { token = req.headers.authorization.split(' ')[1]; } if (!token) { return res.status(401).json({ message: '未授权,请登录' }); } try { // 验证token const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-secret-key'); // 获取用户信息 const user = await User.findById(decoded.id); if (!user) { return res.status(401).json({ message: '用户不存在' }); } // 将用户信息添加到请求对象中 req.user = user; next(); } catch (error) { console.error('Token验证失败:', error); return res.status(401).json({ message: '无效的token' }); } } catch (error) { console.error('认证中间件错误:', error); res.status(500).json({ message: '服务器错误' }); } }; module.exports = { protect };