我正在運行一個快速服務器,如果沒有其他特定的 URL 不符合,用戶將被重定向到 React 應用程式:
app.get("*", verify, (req, res) => {
if (maintenance) {
return res.sendFile("./maintenance.html", { root: __dirname });
}
return res.sendFile(
path.resolve(__dirname, "../frontend/build", "index.html")
);
});
這成功地運行了verify檢查發出請求的用戶是否登錄所需的中間件,如果沒有,則將他們重定向到另一個服務以供他們登錄。
我會認為,由于所有正在使用的 URL 都在通過整個 Web 應用程式通過這個快速服務器,因此無論用戶在哪個頁面上,驗證中間件都會被執行。但是,此中間件僅在尚未訪問該站點(未快取)的瀏覽器上打開站點或用戶強制重繪 頁面時執行。
我是 React 的新手,這讓我相信 React 會加載整個應用程式,并且在每次更改頁面時(例如從 /home 到 /profile),它不會更改 url,只會加載部分已加載的應用程式,因此無論用戶在哪個頁面上,express 將始終看到用戶僅在根域中。
我如何在前端不做任何這種邏輯的情況下通過這個。例如verify,在 react 應用程式上的每個頁面加載到視圖中之前運行該函式
uj5u.com熱心網友回復:
由于 React 是所有客戶端渲染,因此您需要在 React 路由器而不是 Node 路由器中處理該中間件。在前端,我們稱之為“中間件”保護路由。
總而言之,您需要在前端保護這些路由,因為當您在 React 中更改頁面時,Node 并不知道(因為 React 是客戶端呈現的)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/395211.html
標籤:javascript 节点.js 反应 表达
下一篇:如何映射具有不同陣列項的組件
