0

ASP.net MVC에서 사용자 지정 멤버 자격 공급자를 구현했으며 사용자 이름을 대/소문자를 구분하지 않는 방법을 알아낼 수 없습니다. 예를 들어, "Solomon"은 로그인 할 수 있지만 "solomon"은 로그인 할 수 없습니다.사용자 지정 멤버 자격 공급자에서 대/소문자를 구분하는 사용자 이름 제거

내 구현은 매우 미숙 한 뼈다. 기본적으로 ValidateUser() 및 Change Password()에 대한 코드를 작성했습니다.

도움 주셔서 감사합니다.

+0

ValidateUser()에서 데이터베이스를 호출합니까? 그렇다면 대소 문자를 구분하지 않는 쿼리를 만들어야합니다. 어떤 데이터베이스를 사용합니까? – LukLed

+0

Fluent Nhibernate가있는 orm My Databases를 사용하고 있습니다. – Solomon

답변

2

shimms 반이있다.

두 '계층'간의 논리적 작업 분할은 건전하지 않습니다.

논리 연산은 원자 적이어야합니다. 두 검색어를 모두 낮추면 ...

예 :

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

당신 말이 맞아요. +1 –

+0

신난다, 고마워! – Solomon

0

사용자 이름을 소문자로 변환 한 다음 데이터베이스의 소문자 버전과 비교하십시오. 는 ANSI SQL은 다음과 같습니다과 같은

WHERE LOWER(username) = :username 

공급 사용자 이름 매개 변수 :

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

대문자를 선호합니다. –

+0

shimms는 논리 의존성이 있습니다. 논리 연산을 분할하면 안됩니다. 이것은 데이터베이스/쿼리의 원자 비교 여야합니다. –