【发布时间】:2021-08-17 18:22:17
【问题描述】:
我为添加到 header 的 auth api 密钥创建中间件。
const loger = require("easy-loger");
require('dotenv').config();
function authMiddleware(req, res, next){
const appApiKey = process.env.API_KEY;
let requestApiKey = req.headers.apikey;
if(requestApiKey === "undefined"){
loger.createLog('Try to authorize without api key from : '+ req.headers.host, 'info');
res.status(401);
res.json({
code: 403,
message: 'You need to authorize in this route'
});
}
if(appApiKey === requestApiKey){
next();
}else {
loger.createLog('Try to authorize user without rights with api key: '+ requestApiKey, 'info');
res.status(403);
res.json({
code: 403,
message: 'You have not permission for this route'
});
}
}
如果我将其添加为路由 evrything 中的函数,工作正常,但如果我尝试将其用作模块,则会出现如下错误:
let requestApiKey = req.headers.apikey;
^
TypeError: Cannot read property 'headers' of undefined
如何在导出模块 mddleware 中获取 heders?
【问题讨论】:
-
您能否发布您在路由中的使用方式以及
authMiddleware模块的导出代码部分? -
我在文件 api.js
var express = require('express'); var db = require('../modules/db/db'); var validator = require('validator'); var loger = require('easy-loger'); require('dotenv').config(); var auth = require('../modules/auth/authMiddleware'); var router = express.Router(); router.use(auth); router.post ....中使用这个中间件这个 api.js 文件被绑定到 app.js 并且没有这个中间件或者如果中间件被用作 api.js 中的绑定函数router.use(function authMiddleware(req, res, next) { ...应用程序正确运行
标签: javascript node.js express middleware