fix: 修复consumableImport.js路由级authMiddleware拦截所有/api请求的问题

consumableImport.js挂载在/api根路径,使用router.use(authMiddleware)
会拦截所有/api/*请求(包括公开路由如/api/auth/login),
导致登录等公开接口返回401。

修复方案:移除router.use(authMiddleware),改为在每个具体路由上
单独添加authMiddleware中间件。
This commit is contained in:
zhang96110
2026-04-02 03:35:23 +00:00
parent dc20bdba1f
commit 1bda91b93e
6 changed files with 46 additions and 47 deletions
+10 -5
View File
@@ -2,11 +2,16 @@ const express = require('express');
const router = express.Router();
const { Op } = require('sequelize');
const { sequelize } = require('../db');
const { authMiddleware } = require('../middleware/auth');
const Consumable = require('../models/Consumable');
const ConsumableLog = require('../models/ConsumableLog');
const { importJobManager } = require('../utils/importJobManager');
const { generateId } = require('../utils/idGenerator');
// 注意:此路由挂载在 /api 根路径,不能使用 router.use(authMiddleware)
// 否则会拦截所有 /api 下的请求。认证由 server.js 全局中间件处理。
// 各路由单独添加 authMiddleware。
const SUPPORTED_FIELDS = [
'consumableId',
'name',
@@ -63,7 +68,7 @@ const parseSnList = snStr => {
return [];
};
router.post('/consumables/background', async (req, res) => {
router.post('/consumables/background', authMiddleware, async (req, res) => {
const { items, operator = '系统', mode = 'create', fieldMapping = {} } = req.body;
if (!items || !Array.isArray(items) || items.length === 0) {
@@ -245,7 +250,7 @@ router.post('/consumables/background', async (req, res) => {
});
});
router.get('/consumables/progress/:jobId', async (req, res) => {
router.get('/consumables/progress/:jobId', authMiddleware, async (req, res) => {
const { jobId } = req.params;
const progress = importJobManager.getJobProgress(jobId);
@@ -256,7 +261,7 @@ router.get('/consumables/progress/:jobId', async (req, res) => {
res.json(progress);
});
router.post('/consumables/cancel/:jobId', async (req, res) => {
router.post('/consumables/cancel/:jobId', authMiddleware, async (req, res) => {
const { jobId } = req.params;
const job = importJobManager.getJob(jobId);
@@ -272,7 +277,7 @@ router.post('/consumables/cancel/:jobId', async (req, res) => {
res.json({ message: '任务已取消' });
});
router.get('/consumables/result/:jobId', async (req, res) => {
router.get('/consumables/result/:jobId', authMiddleware, async (req, res) => {
const { jobId } = req.params;
const job = importJobManager.getJob(jobId);
@@ -293,7 +298,7 @@ router.get('/consumables/result/:jobId', async (req, res) => {
});
});
router.get('/consumables/field-mappings', async (req, res) => {
router.get('/consumables/field-mappings', authMiddleware, async (req, res) => {
const mappings = [
{ source: '耗材ID', target: 'consumableId', required: false, description: '耗材唯一标识符' },
{ source: '名称', target: 'name', required: true, description: '耗材名称' },