簡體   English   中英

ASP.NET身份並發登錄

[英]ASP.NET Identity Concurrent Logins

我有一個ASP.NET Web窗體應用程序。 此應用程序不是將在內部使用的東西,而是將其安裝在服務器上並出售給將在內部使用它的客戶。

因此,我們限制了可以訪問它的用戶數量(不同的軟件包:10、25、50或無限制)。 但是問題是,使用ASP.NET Identity允許並發登錄。 這意味着,如果一個客戶有10個用戶的系統,那么他們都可以以同一用戶身份登錄,並且實際上具有無限的用戶訪問權限。 因此,如果“ Dave”以Dave身份登錄,那么Jim可以以Dave身份登錄,Bob,John,Stacey以及其他任何人也可以登錄。

我所缺少的是一種強制並發登錄(如果是同一用戶)的方法。 因此,如果Bob嘗試以Dave身份登錄,則Dave(原始登錄名)將被注銷。

我發現了一些可以解決該問題的示例,但它們有些過時,並且適用於MVC。

我能夠通過使用cookie身份驗證和異步方法來更新安全戳來解決此問題。

基本上,用戶的登錄信息存儲在cookie中,該cookie在每次頁面加載時都會得到驗證。 當其他人使用相同的用戶名登錄(或同一用戶使用其他瀏覽器登錄)時,它會更新安全性戳(導致當前登錄的任何人均無效),然后使用更新后的戳進行登錄。 在登錄屏幕上,我的“登錄”按鈕的LogIn事件是:

protected async void LogIn(object sender, EventArgs e)

然后在方法的主體下面,我們有:

await signinManager.UserManager.UpdateSecurityStampAsync(user.Id);
await signinManager.PasswordSignInAsync(Username.Text, Password.Text, true, false);
Response.Redirect("~/Default.aspx");

這將確保每次用戶登錄時,他們的SecurityStamp都會更新並存儲在數據庫中。 只要用戶在同一瀏覽器中返回該站點,他們的登錄信息就會保留下來。 但是,如果有任何用戶在其他瀏覽器后面出現並使用相同的憑據登錄,則第一個帳戶將被注銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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