Nodejs,nginx,express - 在提供静态文件之前检查用户是否经过身份验证不起作用

时间:2018-03-08 16:32:02

标签: node.js express nginx

当使用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是否与此有关?以及如何解决它。

1 个答案:

答案 0 :(得分:0)

您的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配置。

确保简单地在你的app.get中放入一个console.log,如果没有出现,你必须编辑nginx