2010-08-02 9 views
4

저는 ASP .NET 회원 데이터베이스를 사용하여 웹 응용 프로그램의 사용자를 인증하고 있습니다.Membership.FindUsersByEmail - SQL 와일드 카드

사용자는 이메일 주소를 사용하여 로그인하지만 다른 것은 데이터베이스의 사용자 이름 필드에 사용됩니다.

그래서 로그인 폼에, 나는 문제는이 기능을 사용한다는 것입니다 Membership.FindUsersByEmail

를 사용하여 내 사용자를 페치 'LIKE'SQL과 그 SQL 와일드 카드가 그 방법에서 탈출하지 않습니다.

예를 들어, [email protected]의 메소드를 사용하면 [email protected][email protected]에 대한 사용자 이름이 반환됩니다 (밑줄 문자가 와일드 카드로 처리되기 때문에).

위키에 따르면 따옴표, % 및 다른 문자가 전자 메일 주소에 허용됩니다. 내가 Membership.FindUsersByEmail를 호출하기 전에

emailAddr = emailAddr.Replace("_", "[_]").Replace("%", "[%]")... 

같은 일을 할 수 있지만

, 나는이 작업을 수행 할 수있는 청소기 방법이있을 것으로 생각하고있다.

+0

왜 LIKE 문을 사용하고 있습니까? 사용자가 자신의 이메일 주소를 어떻게 입력했는지 알지 못합니까? 실수로 GMAIL에 갔다가 '[email protected]'을 입력 한 적이 없습니다. (또는 더 정확하게 :. [난처하게] @ gmail.co). – AllenG

+0

나는 같은 성명을 사용하는 사람이 아니다. System.Web.Security.Membership.FindUsersByEmail입니다. 여기를 참고하십시오 http://msdn.microsoft.com/en-us/library/b2ec0bts.aspx –

답변

3

이와 같은 상황에서 이메일 주소가 고유해야하고 다음 사용자를 MembershipProvider.GetUserNameByEmail을 통해 전달해야한다고 생각합니다.

+0

고유 한 전자 메일 주소가 이미 적용되었습니다. 나는 그 방법에 대해서 몰랐다. –

+0

필자는 FindUsersByEmail을 발견했을 때 인텔리 센스를 내려다 보았습니다. GetUserNameByEmail이 더 좋습니다. – harriyott