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

标签 javascript node.js express

我正在使用 Express js。在根文件夹中,我有一个 public 文件夹,其中包含子文件夹 stylesheetsjavascriptsfonts图片html。我想在用户未登录的情况下保护我的 Assets 。例如,如果有人在未登录的情况下打开 Web 浏览器,则请求 http://localhost:3000/images/hello.jpg那么请求应该被重定向到登录页面。

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

挑战 1

登录页面还有一些 4 到 5 个资源(CSS 和 JS 文件),它们放置在同一个公共(public)文件夹中。

挑战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 尚未登录,他现在正在直接访问 Assets ,并且他正在可以访问。

发生这种情况是因为我们没有根据用户将公用文件夹设置为静态,如果任何用户成功登录,我们会将其设置为静态。

最佳答案

您可以在 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
};

关于javascript - 如何关闭app.use(express.static ('/public' )); express js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43843555/

相关文章:

javascript - Microsoft Graph API token 验证失败

javascript - 在 Promise.all 中使用同步函数有什么优势吗?

javascript - 检查 req.body 是否为空不适用于express

javascript - Expressjs/AngularJS : Error after implementing req-flash

node.js - 使用 Express.js Node.js header (cURL) 中的 token

javascript - 我不明白这段代码有什么错误

javascript - 为什么 TypeScript 将类包装在匿名函数中?

javascript - Webpack 2 + React - 使用 System.import 进行代码拆分时的嵌套路由

javascript - 流利的 ffmpeg h264 到 gif throw "error 1"

javascript - 使用got时如何计算花费的时间?