【问题标题】:Express.js get header in mddlewareExpress.js 在中间件中获取标头
【发布时间】: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


【解决方案1】:
// in authMiddleware file you need to export the middleware
module.exports = { authMiddleware }

// in the file you use it, you need to :
const { authMiddleware } = require('../modules/auth/authMiddleware');
router.use(authMiddleware );

【讨论】:

  • 感谢这个选项导出为对象module.exports = { authMiddleware }运行完美。
猜你喜欢
  • 2013-07-18
  • 1970-01-01
  • 2019-12-10
  • 2013-09-15
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多