如何关闭 app.use(express.static('/public'));快递 js



我正在使用Express JS。在根文件夹中,我有一个public文件夹,其中包含子文件夹stylesheetsjavascriptsfontsimageshtml。如果没有登录用户,我想保护我的资产。例如,如果某人打开Web浏览器并且没有登录,请要求http://localhost:3000/images/hello.jpg请求,则应将请求重定向到登录页面。

为了实现此目的,我有条件地使用express.static(path.join(__dirname, '/public'))

挑战1

登录页面也有大约4至5个资产(CSS和JS文件(,这些资产放置在同一公共文件夹中。

挑战2

我正在使用此代码express.static(path.join(__dirname, '/public'))

if(userIsLoggedIn){
   express.static(path.join(__dirname, '/public'))
}else{
   //what to do here???
   //I need a code here which makes public folder as non-static folder
}

例如,我们有2个用户A和B。两个用户都使用不同的计算机。用户A正在成功进行登录,在服务器上,我们将public文件夹设置为static,但是用户B尚未完成登录,他现在直接访问资产,他可以访问。

这是因为我们没有将公共文件夹设置为用户静态文件夹,如果任何用户成功登录,我们都会使其变得静态。

您可以在express.static之前添加额外的中间件来强制用户验证。

var VerifyUser = require('./verifyuser');
app.use(VerifyUser, express.static(__dirname + '/public'));

//VerifyUser code
module.exports = function(req, res, next) {
    if(user.isLogged) 
      next();
    else
     next(err); //presume you have some error handler middleware
};

一种快速的方法是简单地将一个空目录并指向它。或将您不介意公开的文件添加。

express.static(path.join(__dirname, '/someemptydirectory'))

相关内容

最新更新