5

我有一個應用程序掛鉤到單個數據庫。Asp.net覆蓋在運行時的成員資格設置(asp.net mvc)

該應用程序現在需要掛鉤到多個數據庫。我們想要做的是使用相同的應用程序/域/主機名/虛擬目錄給用戶在登錄屏幕上的選項,選擇他們想要連接到的「應用程序/數據庫」。

每個數據庫都有應用程序表/數據/特效/ etc以及aspnet成員資格/角色的東西。

當用戶輸入用戶名/密碼並選擇(選擇列表)應用程序時,我想根據所選應用程序數據庫驗證用戶。

目前,成員資格服務的數據庫連接字符串保存在web.config中。有什麼辦法可以在登錄時覆蓋這個嗎? 另外,我還需要「記住我」功能才能順利進行。當用戶在5個小時內回到應用程序時,這是如何工作的......這個過程應該能夠識別用戶和應用程序並適當地登錄。

回答

5

可能的唯一方法是通過反射改變康恩字符串:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

這裏找到: http://forums.asp.net/p/997608/2209437.aspx

爲什麼不只是實現自己的MembershipProvider?很容易做,然後你完全控制發生了什麼。我相信你會想出另一個默認提供者不適用的自定義場景。

AFAIK記住我的功能應該正確地工作,只要用戶不刪除他們的cookies即可。