12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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
- };
|