因此,我每次向Express应用程序发出请求时都会调用一个中间件:
app.use(function(req, res, next) {
if(req.isAuthenticated()) return next();
return response.redirect('/login');
})
对于登录页面,我正在提供一个简单的ejs文件,其中包含点击登录按钮和计算机的背景图像。
问题是,当我使用该中间件时,如果用户未经过身份验证,则不会提供作为后台的静态文件。其他一切都显示出来了。我需要中间件进行身份验证,但如果用户在应用程序上进行了全新打开,则它不会为文件提供服务(意味着用户未登录)。如何在保留此中间件的同时提供资产?
答案 0 :(得分:0)
通常没有理由要强制您对静态资产进行身份验证(此外,您的中间件仅用于捕获对常规页面进行的未经身份验证的请求,而不是图像/ js / css文件),所以不要声明你的中间件,直到声明为静态资产提供服务的中间件:
app.use(express.static(...));
app.use(function(req, res, next) {
if(req.isAuthenticated()) return next();
return response.redirect('/login');
})
答案 1 :(得分:0)
我同意在访问静态资源时不需要身份验证的想法,但如果您真的想这样做,当然可以,只需执行以下操作:
app.use((req, res, next)=>{
if(req.isAuthenticated()){
express.static(...)(req, res, next);
}else{
res.redirect('/login');
}
})