2011-03-31 2 views

답변

4

강제 사용자 이름 = 사용자 이메일.

이렇게하려면 올바른 전자 메일을 사용자 이름으로 허용하기 위해 사용자 생성 양식에 RegEx 유효성 검사기를 넣으면됩니다.

사용자의 이메일에 따라 기존 사용자 이름을 바꿉니다.

7

이것은 우리가 한 일이므로 재사용이 가능하며 web.config에서 등록 할 수 있습니다. 당신이 그것에 대해 생각한다면, 이것은 그것이 중요한 곳입니다. 유효성 검사 및 프론트 엔드가 최종 사용자에게 사용자 이름이 전자 메일이어야 함을 나타내며 적절한 유효성 검사를 수행하면 ... 정상적인 호출로 어떤 멤버 자격 공급자가 여러분을지지하는지 확인합니다. 바로 가기 버전의 새로운 방법과 원래의 외관 뒤에 숨겨진/숨기기.

public class EmailAsUsernameMembershipProvider : SqlMembershipProvider 
{ 
    public MembershipUser CreateUser(string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) 
    { 
     return base.CreateUser(email, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); 
    } 
    private new MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) 
    { 
     return base.CreateUser(email, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); 
    } 

    public override bool RequiresUniqueEmail 
    { 
     get 
     { 
      return true; 
     } 
    } 
} 
+0

나는 DAL/BLL 및 웹 응용 프로그램과 같은 구조를 가지고있는 웹 응용 프로그램을 사용하고 있습니다. (비즈니스 논리 계층 데이터베이스 액세스 계층 및 웹 응용 프로그램의 다른 계층의 조합은 SQL 공급자 클래스를 상속하는 방식으로 수행 할 수 없습니다. 그래서 ... – user685565

+0

우리 앱은 같은 것을 사용합니다. asp.net의 멤버십을 사용하는 경우입니다. 멤버십을 사용하지 않으려면 회원 전용 멤버십을 작성해야합니다. 우리는 사용자에게 넥서스하기위한 guid를 가지고있다. 우리는 httpContext에 주입되어 그 쿼리를 랩핑하여 데이터를 메이트하고 현재 로그인 한 사용자에게 쉽게 액세스 할 수있게하는 SecurityContext 객체를 가지고있다. 당신의 질문에이 대답이 그것을 커버하지 않는다면. –

5

이미이 스레드에 설명 된대로이 모든 것이 가능하지만주의해야 할 한 가지가있다 : 데이터베이스에 사용자 이름이 50 개 문자 (테이블 사용자) 이메일 (테이블 구성원은) 256 개 문자입니다 오래 동안이다 긴. 사실 그것은 짧은 이메일 주소를 의미합니다. :)

관련 문제