2016-09-21 76 views
0

我試圖阻止使用ASP.NET Core和CookieAuthentication中間件的用戶的多個併發會話。防止併發用戶會話ASP.NET Core

有關如何做到這一點的任何提示?

理想情況下,一旦用戶登錄,該應用程序將無效並有效「註銷」爲該用戶發佈的所有其他現有Cookie。然後,舊的會話將在與服務器的下一次交互中重定向到登錄頁面。到目前爲止,我還沒有找到辦法做到這一點。

我一直在想方設法使用documentation中描述的自定義驗證器。

謝謝!

回答

0

這是我如何處理它(使用ASP.NET Core,但這是無關緊要的):要做到這一點,你需要維護狀態的某個地方,可以訪問您的服務器。您可以在用戶登錄時將會話ID存儲在數據庫中。每個Web應用程序客戶端都應該輸入心跳網址(例如,每隔幾分鐘)。心跳的後端檢查數據庫中的會話ID。如果它對用戶來說是活躍的,那麼一切都很好;否則它清除cookie。如果您使用持久連接到客戶端(websocket),則可以將消息推送到客戶端以指示會話不再有效。

如果您需要確保在新會話開始後用戶的其他會話不會發生其他操作,那麼您需要在每次呼叫時檢查會話(如上所述)。 ASP.NET Core的中間件功能非常適合這一點。

+0

這很有道理。我希望有更多的「內置」方式來做到這一點與cookie身份驗證,但使用中間件將工作得很好。 –