문제


a) 템플릿을 사용할 때 왜 CreateUserWizard 제어, 포함 텍스트 상자 ~와 함께 id = 이메일 여부에 따라 다릅니다 CreateUserWizard.RequireEmail 속성은 True로 설정되었지만 텍스트 상자 ~와 함께 ID = 질문 기본 멤버십 제공자가 비밀번호 질문이 필요한 경우에만 필요합니까? 다시 말해, 왜 그 기초 멤버십 제공 업체에 달려 있지 않습니까? 텍스트 상자 ( id = 이메일로 ) 필요합니까?


b) 반면에 왜 비밀번호 질문이 필요한지 결정하기 위해 회원 공급자에게 달려 있습니까? 이것이 끝나지 않아야합니다 멤버십 클래스 결정하는? 결국, 멤버십 제공 업체의 임무는 기본 데이터 저장소에 대한 액세스를 제공하고 사용자가 어떤 데이터를 제공 해야하는지 결정하지 않아야합니까?!


고맙습니다


편집하다:

ㅏ)

멤버십 제공 업체는 명백한 매핑을 가지고 있다는 사실에 달려 있습니다. 요구 사항을 설정하고 시행 할 수있는 Quessestionandanswer는 사용자가 이메일 주소를 제공해야한다고 지정할 수는 없습니다.

따라서 본질적으로 ImiqueAmail은 사용자가 이메일 주소를 지정할 필요가 없다고 말하지만, 그렇다면 독특해야합니까?


비)

  • 멤버십 제공 업체를 올바르게 이해하면 SQL 쿼리를 데이터 저장소에 보내는 엔티티입니까?! 따라서 나는 그들이 테이블과 관계에 대한 모든 지식을 가지고 있다고 가정합니다.이 데이터 스토리지는 무엇입니까?

  • 그러나 데이터 저장소에 이메일 주소를 저장할 열이 없지만 CreateUser ()가 이메일 주소를 매개 변수 중 하나로 지정하는 경우 어떻게해야합니까? 회원 공급자는이를 어떻게 처리합니까?

도움이 되었습니까?

해결책

이메일이 예상 데이터 필드의 일부라는 것은 흥미로운 점입니다.

SQL 제공 업체에 대해 요구 사항을 true로 설정하면 이메일이 필요하지 않습니다. 그것은 단지 모든 사용자가 다른 사용자와 다른 이메일 주소를 사용해야한다는 것을 의미합니다. 따라서 이메일 주소가없는 한 명의 사용자가있을 수 있습니다. 데이터베이스에서 NULL 값이 설정됩니다. 그러나 다른 사용자는 두 명의 사용자가 Null 이메일을 가질 수 있기 때문에 이메일 주소를 생략 할 수 없습니다. 따라서 기능적으로는 필요한 이메일 주소와 동일 할 수 있지만 기술적으로 동일하지는 않습니다.

마법사 컨트롤은 멤버십 정보를 수집하기위한 기본 UI를 제공하며 기본 SQL 제공 업체를 사용한다고 가정합니다. 기본 공급자를 사용하지 않는 경우 제공자가 모든 필드를 지원하지 않거나 제공자에 다른 고유 한 제약 조건이 있으면 자신의 템플릿으로 마법사 단계를 사용자 정의하고 마법사의 이벤트를 처리하여 자신의 검증을 제공해야합니다. 그리고 추가로 논리.

회원 시스템 자체를 이해하는 데 ...

ASP.NET의 멤버십 시스템은 엄격한 OO 설계와 편의성 사이의 타협입니다. 기본 멤버십 전문가 클래스에는 특정 멤버십 제공 업체가 상속되는 몇 가지 가정이 있습니다. 이메일 주소가 기본 제공 업체가하는보다 자유로운 가정 중 하나에서 회원 데이터의 일부가 될 것이라는 사실.

대부분의 환경에서 사실 인 가정을함으로써 멤버십 시스템은 이메일 주소와 관련된 일부 기능을 간단하고 직관적 인 방식으로 노출시킬 수 있습니다 (예 : 사용자 이름 대신 이메일 주소로 사용자를 확보하고 여러 계정을 금지하는 등 동일한 이메일 주소로). 기본 클래스가 그러한 가정을하지 않은 경우, 특정 제공 업체에서 이메일로 작업을 수행하고 싶을 때마다 응용 프로그램 내에서 사용하는 특정 유형에 대한 참조를 시전해야합니다. 이것은 번거 롭습니다.

순전히 OO의 관점에서 볼 때, 이러한 가정은 불편합니다. 그러나 많은 멤버십 제공 업체는 사용하지 않으면 기본 클래스의 방법과 속성에 대한 빈 구현을 제공 할 수 있습니다.

예를 들어 Windows Token 역할 공급 업체에는 NOTIMPLMENTEDEXCeption을 던지는 많은 회원이 있습니다 (Token 역할 제공 업체는 AD의 읽기 전용 공급자이므로 모든 부동산 세트 액세서가 예외를 제외하고 있습니다).

다른 팁

멤버십 제공 업체가 명백한 매핑을 가지고 있다는 사실에 달려 있습니다. QuessionQuestionandAnswer,이를 설정하고 시행 할 수는 있지만 사용자가 ~ 해야 하다 이메일 주소를 제공하십시오.

고유 한 이메일 주소를 필요합니다 "이메일이 필요"라고 말하는 것과 같지 않습니다.

멤버십 제공 업체가 질문이 필요한지 여부를 제어 해야하는 이유에 관해서는 : 공급자가 EnablePasswordReset 및 EnablePasswordRetRieval과 같은 것을 제어하고 있기 때문입니다. 이는 Memebership 클래스에 지식이없는 것입니다.ValidateUser"메소드는 web.config에 지정된 기본 공급자를 사용하여 다음을 수행합니다.

멤버십 클래스는 멤버십 제공 업체에 의존하여 데이터 소스와 통신합니다.


질문 편집에 대한 응답으로 :

ㅏ. 맞습니다 스티븐이 지적했다, 빈 이메일 주소를 가진 한 명의 사용자가있을 수 있고 다른 모든 사람에게는 가치가 있어야합니다. 유효성 검사기에 따라 이것은 실제로 유효한 이메일 addres 일 필요는 없습니다.

B.1. 공급자는 사용자 데이터 저장소에서 데이터를 보냅니다. 이는 SQL 일 수도 있지만 Active Directory, LDAP, 텍스트 파일 등이 될 수도 있지만, 제공자는 응용 프로그램과 응용 프로그램 간의 분리 계층 역할을합니다. 사용자 저장소.

B.2. 회원 자격에는 많은 부분이 있습니다 - 문서 사용자 정의 멤버십 사용자 구현 사용자 정의 사용자를 만드는 데 필요한 단계를 안내합니다. 데이터 스토리지가 이메일 주소를 처리하지 않은 경우 (또는 프로필에 여러 이메일을 저장 한 경우) 제공 업체가 생성 또는 업데이트시 귀하에게 전송 된 값을 무시할 수 있습니다. , 그리고 그것을 널로 채우십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top