簡體   English   中英

如何關閉app.use(express.static('/ public')); 快遞js

[英]How to turn off app.use(express.static('/public')); Express js

我正在使用Express js。 在根文件夾中,我有一個public其中包含子文件夾stylesheetsjavascriptsfontsimageshtml 如果用戶未登錄,我想保護我的資產。例如,如果某人打開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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM