繁体   English   中英

Node.js,nginx,Express-在提供静态文件之前检查用户是否已通过身份验证

[英]Nodejs, nginx, express - Checking if user is authenticated before serving static files doesn't work

使用nginx运行时,app.get似乎没有受到攻击。 但是,它在本地运行,没有nginx。 受影响的代码如下:

app.get('/', function(req, res, next){
    if (!req.isAuthenticated()){
        return res.redirect('/login');
    } else {
        app.use('/', express.static(path.join(__dirname, 'dist-restricted')));
        return next();
    }
});

该代码在向用户发送受限制的静态文件之前,会检查用户是否已使用护照进行了身份验证。 运行nginx时,不会重定向用户登录。

Nginx是否与此有关? 以及我该如何解决。

您的nginx可能在不通过节点的情况下提供静态文件。

例如,使用这样的配置,nginx将直接读取文件,而无需使用node:

location ~^\/(js|css|fonts|images|img|plugins|upload|pdf) {
      expires 1M;
      access_log off;
      add_header Cache-Control "public";
      add_header Access-Control-Allow-Origin *;
      add_header Access-Control-Allow-Methods GET;
      add_header Access-Control-Allow-Headers X-Requested-With,content-type;
      add_header Access-Control-Allow-Credentials true;
      root /mypatht/public;
    }

如果nginx直接读取您的文件夹,则不编辑nginx配置就无法做任何事情。

要确保将console.log放入app.get内,如果未出现,则必须编辑nginx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM