0

我在ASP.net MVC中實現了自定義成員資格提供程序,並且無法弄清楚如何在登錄時使用戶名不區分大小寫。所以,例如,「所羅門」可以登錄,但「solomon」不能。擺脫自定義會員供應商中的區分大小寫的用戶名

我的實現很枯燥。我基本上只是寫了ValidateUser()和Change Password()的代碼。

感謝您的幫助!

+0

您是否在ValidateUser()中調用數據庫?如果是的話,你應該使查詢不區分大小寫。你使用什麼數據庫? – LukLed 2010-03-06 04:57:17

+0

我將Fluent Nhibernate的MySql數據庫用作我的orm。 – Solomon 2010-03-06 15:21:59

回答

2

shimms是一半。

拆分兩個'層'之間的邏輯操作並不是一種合理的做法。

邏輯運算應該是原子運算。因此,只需在查詢中降低兩者...

例如

where Lower(username)=Lower(@username) 
+0

你說得很對。 +1 – 2010-03-06 05:17:22

+0

真棒,謝謝! – Solomon 2010-03-06 15:21:13

0

將用戶名轉換爲小寫版本,然後將其與數據庫中用戶名的小寫版本進行比較。在ANSI SQL將是:

WHERE LOWER(username) = :username 

提供用戶名參數爲:

... = username.ToLower(); 
+0

我更喜歡大寫:) – 2010-03-06 05:05:32

+0

這裏有一個脆弱的邏輯依賴關係,shimms。您不應該分割邏輯操作。這應該是數據庫/查詢中的原子比較。 – 2010-03-06 05:18:23