gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:41:28 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com