3

我正在開發一個ASP.NET MVC4和WebAPI項目,其中所有內容都將通過ajax WebAPI調用執行。正如所料,所有業務邏輯都是在我的項目中的WebAPI上實現的,從登錄系統開始。MVC4 Web API阻止多個同時登錄具有相同憑證

我需要解決的場景與用戶登錄有關。我已經實施並相當運行。但是新的需求要求我在這個現有的WebAPI登錄系統上實現一個安全機制,以防止同時使用相同的憑證登錄系統。我必須在這裏實現的是,我必須包含給定憑證的獨佔登錄,以便其他用戶無法在用戶使用該憑證登錄時登錄。

我該如何處理所有情況,如檢測用戶是否已登錄/檢測到用戶註銷,以便憑證現在可用於登錄,其中還包括用戶無法出站由於瀏覽器崩潰或計劃外關機或網絡斷開而導致系統崩潰。

我該如何執行此操作?我沒有使用任何會員供應商。身份驗證是針對Active Directory完成的。

+0

你是如何實現你的授權與認證機制?它是不是基於服務器端狀態處理的令牌? – Whizkid747 2013-03-05 03:43:37

+0

是的,這是基於cookie的。使用針對Active Directory的FormsAuthentication。 – 2013-03-05 05:43:46

回答

0

由於您在Active Directory中使用表單身份驗證,因此只要您將ActiveDirectoryMembershipProvider指定爲您的提供程序類型,您仍然應該能夠使用常規提供程序方法。在你的登錄方法,您可以使用

var user=Membership.GetUser(userName); 
if(!user.IsOnline) 
    //Do some login stuff 

在你的web配置,你會希望有

<membership defaultProvider="ADMembershipProvider"> 
    <providers> 
    <add 
     name="ADMembershipProvider" 
     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, 
     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="ADConnectionString" 
     connectionUsername="MyDomain\MyADUserName" 
     connectionPassword="MyADPassword" 
     enablePasswordReset="false" 
     attributeMapUsername="sAMAccountName"/> 
    </providers> 
</membership> 

在您需要的正確件只需填寫並應工作正常。

確保你也有一個連接字符串爲您的廣告控制器

<add name="ADConnectionString" connectionString="LDAP://MyADMachine/DC=MyDomain,DC=MyTLD" /> 
相關問題