2009-08-02 62 views
11

我想知道如何在asp.net中擴展成員資格?如何在Asp.net中擴展成員資格?

當用戶登錄時,我想檢查用戶名和密碼。當然,標準的asp.net成員資格會這樣做(這是ValidateUser())。

我也想檢查另一個叫做「機構」的字段。如果用戶在此框中鍵入內容,我想驗證「院校」,「用戶名」和「密碼」是否與數據庫中的內容匹配。

如果用戶將「院校」留空,那麼我只想使用它在asp.net中提供的默認ValidateUser()方法,並只檢查「userName」和「password」。

所以我可以重載ValdiateUser()方法?還是我必須自己寫一個來處理這個新案例?

我該在數據庫中存儲這個「機構」字段?我聽到有人推薦「個人資料」表,但我不確定。

而且我怎樣才能改變成員對待這些爲3個不同的用戶

機構:ABC 用戶名:A09410515 密碼:1234567

機構:GHA 用戶名:A09410515 密碼:1234567

用戶名:A09410515 密碼:1234567

所以作爲我的數據庫應該關注這些應該是3個獨特的用戶。當然,如果我的數據庫已經存儲了相同的信息。

例如。

機構:ABC 用戶名:A09410515 密碼:1234567

,並有人試圖與「用戶名」和「機構」,那麼它會吐回大約是重複的名稱錯誤完全相同的信息註冊。

回答

15

是的,你可以create a custom membership provider。您的提供商將實施MembershipProvider,使您可以完全控制在成員系統和擴展數據庫模式之間創建界面。 Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site是一個詳細的例子。

+0

嗨 感謝您的聯繫。但我仍然有點困惑。我在哪裏存儲我將要添加的這些額外字段。我是否可以將它添加到配置文件或什麼? 就像我正在做一個自定義提供程序,以便我可以合併我的asp.net數據庫和我的數據庫在一起,但我使用的是mssql服務器。 另外我注意到他們重寫了這些方法。我仍然想使用默認的驗證方法。所以我要做2種重載方法。一個用我的自定義驗證和一個方法調用默認驗證方法? – chobo2 2009-08-03 21:48:20

2

這樣做的懶惰方式是將機構和用戶名一起創建實際的用戶名。

因此,您將有3個不同的用戶名:ABC & A09410515,GHA & A09410515和& A09410515。只是不允許用戶在用戶名中使用&。

然後,在創建用戶或登錄之前,只需將兩個字符串組合在一起即可。

我不能想到的,不能固定一個簡單的黑客任何顯著的問題(如顯示的用戶名(使用username.split(「&」)[1]),但日本的職位肯定是「正確」的方式來做到這一點。

詹姆斯

1

您可以使用應用程序名稱,作爲該機構,這樣,你會在不同的應用

羅德里戈具有相同的用戶名。