我已經使用自定義 cookie 身份驗證實作了登錄功能,并且運行良好。
當我從一個選項卡注銷時,它正在作業,一旦使用 do log out 用戶將重定向到注銷螢屏。但是當我打開多個標簽時,用戶仍然可以訪問其他標簽中的頁面。
如果我在其他選項卡中重繪 頁面,則用戶正在注銷。
它僅在我手動重繪 頁面時才有效,如何在不重繪 頁面的情況下注銷用戶。
如何重繪 應用程式狀態。
uj5u.com熱心網友回復:
您必須在固定的時間間隔內不斷對服務器進行 ajax 呼叫或通過元標記重繪 頁面。但這不是設計的好主意,或者如果您使用客戶 cookie,請遵循它 [1]:https : //github.com/aspnet/AspNetCore/issues/14996
uj5u.com熱心網友回復:
在 Blazor 中,每個選項卡都在不同的 blazor 會話 ID 上運行。因此,即使您注銷,它也不會自動將您從打開的選項卡的其余部分注銷。這是預期的行為。它們都使用相同的物件,但具有不同的會話 ID。因此,其中一個選項卡中發生的任何更改都不會反映在其他選項卡中。在多個選項卡之間進行通信的一種方法是使用本地存盤。它是所有瀏覽器標簽共享的地方。
在我當前的 Blazor 應用程式中,我做了類似的事情。登錄后,我在瀏覽器的本地存盤中添加了一個鍵值對(例如,日期時間戳)。此外,還注冊了一個 setInterval(),用于跟蹤用戶的活動。它還檢查登錄時添加的密鑰。從任何選項卡注銷并洗掉密鑰。當其他瀏覽器選項卡找不到該鍵時,它們會重定向到登錄頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385162.html
