我正在使用 Express js。在根文件夹中,我有一个 public
文件夹,其中包含子文件夹 stylesheets
、javascripts
、fonts
、图片
和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/