我正在爲Node/Express站點添加身份驗證。我的身份驗證使用護照。身份驗證對路由正常工作,但允許用戶猜測URL並直接訪問圖像/視頻等。沒有登錄。您如何密碼保護Node/Express中的靜態資產?
我該如何預防這種情況?我搜查了關於快遞和護照的文件,但沒有看到任何解決方案?
我正在爲Node/Express站點添加身份驗證。我的身份驗證使用護照。身份驗證對路由正常工作,但允許用戶猜測URL並直接訪問圖像/視頻等。沒有登錄。您如何密碼保護Node/Express中的靜態資產?
我該如何預防這種情況?我搜查了關於快遞和護照的文件,但沒有看到任何解決方案?
這類似於@eephillip想出了服務專用靜態資源/文件的解決方案:Using express.static middleware in an authorized route
他還創建了自己的auth.ensureAuthenticated()處理器,但它幾乎與此相同:Documentation for "ensureAuthentication" "isAuthenticated" passport's functions?
您是否在使用API等任何API?對於Instagram的護照包括這樣的功能:
function ensureAuthenticated(req,res,next){
if(req.isAuthenticated()){
console.log("USER IS AUTHENTICATED");
return next();
}
console.log("USER IS NOT AUTHENTICATED");
res.redirect('/home');
}
可以放置在你的路由文件的頂部,將用戶重定向到一個登陸頁面(例如/ home),如果他們沒有被該屆會議期間進行身份驗證。
一個例子,更多信息可以在這裏找到:https://github.com/jaredhanson/passport-instagram/blob/master/examples/login/app.js或谷歌搜索的Instagram護照
只要確保你的認證中間件是一個靜態前加入。當然這個身份驗證中間件應該能夠讓一些請求通過(例如獲取登錄頁面的例子)。
我的猜測是要確保您的auth中間件獲得對靜態資源的請求。您不會找到它的文檔,因爲它與要求對其他任何路由進行身份驗證沒有區別。 –