auth.js 870 B

12345678910111213141516171819202122232425262728293031
  1. const jwt = require('jsonwebtoken');
  2. const User = require('../models/User');
  3. const auth = async (req, res, next) => {
  4. try {
  5. const token = req.header('Authorization').replace('Bearer ', '');
  6. const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-secret-key');
  7. const user = await User.findById(decoded.id);
  8. if (!user) {
  9. throw new Error('用户不存在');
  10. }
  11. req.token = token;
  12. req.user = user;
  13. next();
  14. } catch (error) {
  15. console.error('认证失败:', error);
  16. res.status(401).json({ message: '请先登录' });
  17. }
  18. };
  19. const admin = (req, res, next) => {
  20. if (req.user && req.user.role === 'admin') {
  21. next();
  22. } else {
  23. res.status(401).json({ message: '未授权,需要管理员权限' });
  24. }
  25. };
  26. module.exports = { auth, admin };