![](/img/trans.png)
[英]How to test an Express application when using app.use(express.static('public'));
[英]How to turn off app.use(express.static('/public')); Express js
我正在使用Express js。 在根文件夾中,我有一個public
其中包含子文件夾stylesheets
, javascripts
, fonts
, images
和html
。 如果用戶未登錄,我想保護我的資產。例如,如果某人打開Web瀏覽器但未登錄,則請求http://localhost:3000/images/hello.jpg
則該請求應重定向到登錄頁面。
為此,我express.static(path.join(__dirname, '/public'))
使用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
}
例如,我們有兩個用戶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
};
一種快速的方法是簡單地mkdir一個空目錄並指向它。 或向其中添加您不希望公開的文件。
express.static(path.join(__dirname, '/someemptydirectory'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.