문제

사용자 데이터를 사용자라는 MSSQL 테이블에 저장합니다. 내가 원하는 것은 실제로 로그인 한 사용자 (이메일, 주소, 전화, 사용자가 가입자 등)에 대한 모든 사용자 데이터에 액세스 할 수 있도록하는 것입니다.

프로필을 사용하고 싶지 않아서 Custom Membershipprovider를 사용하기로 결정했습니다 (또는 더 잘 고통스럽고 고통스러운 방법을 알고 있습니까?).

내가 이해하지 못하는 것은 멤버십 사용자와 멤버십입니다. Membershipprovider에서 상속되면 재정의 메소드에서 데이터베이스에서 액세스 데이터를 제어합니다.

그러나 멤버십 프로보더에서 상속 된 클래스를 어떻게 사용합니까? 멤버십을 사용하여 사용자를 인증하려면 다음을 수행해야합니다.

if(Membership.ValidateUser(string username, string password))
{
   FormsAuthentication.RedirectFromLoginPage(string username, string password);
}

그러나 멤버십 프로보더에서 클래스는 어디에 상속됩니까? 그리고 언제 멤버쉽 사용자로부터 상속 된 클래스를 사용해야합니까? 그리고 멤버십과 멤버십 전문가의 관계는 무엇입니까?

도움이 되었습니까?

해결책

그것은 명확하지는 않지만 MSDN에서, 그것은 그다지 복잡하지 않습니다. 수업의 트리오가 있습니다.

  • 멤버십 : 유틸리티 방법과 입력 지점을 제공합니다. 기본적으로 싱글 톤 (정적 클래스).
  • Membershipprovider : 멤버십 사용자 개체의 데이터 액세서 및 공장 역할을합니다.
  • Membershipuser : 개별 사용자를 나타냅니다.

CONFIGURATION/SYSTEM.WEB/MEMBERHIPE (CONDING HIMPROVIDER가 응용 프로그램의 구성에 따라 선택됩니다. 제공자를 데려 오는 곳이 있습니다. 사용자가 원하는 데이터 저장소에 액세스하기 위해 회원 가입 전문가 구현을 작성해야합니다.이 경우 사용자 테이블.

멤버십 객체는 회원 가입자를 통해서만 생성됩니다. Membershipprovider.validateUser () 메소드는 사용자/비밀번호 조합이 유효한지 데이터 저장소에 확인해야합니다. Membershipprovider.getUser ()는 사용자 정보를 검색합니다 - 액세스 보호 페이지 내에서 사용하고 System.Web.httpContext.current.user.Identity.name을 현재 인증 된 사용자로 전달하십시오.

이것은 당신이 원하지 않기를 바랍니다. 프로파일을 사용하십시오, 그리고 실제로 별도의 사용자 테이블을 원합니다. 내부 응용 프로그램을 작성하는 경우 기존 액티브 디렉토리 또는 ldap-지원 데이터 저장소는 관리 비용과 아마도 보안 위험을 줄일 수 있습니다. 멤버십 전문가 경로를 갈 때 쉽게 잘못 할 수있는 수백 가지가 있습니다. 당신은 사용합니까? 소금에 절인 해시? 조작으로부터 사용자 테이블을 어떻게 보호하고 있습니까? MSDN은의 일부만 커버합니다 보안 문제들 당신은 대면 할 수 있습니다.

다른 팁

사용 된 특정 제공자는 Web.config에서 제어됩니다. 실제로 1 개 이상의 공급자를 설정하고 기본 공급자가있을 수 있습니다. 확인하다: http://msdn.microsoft.com/en-us/library/6e9y4s5t.aspx.

그렇게 호출되면 멤버십은 기본 공급자 만 사용합니다. 사용자에게 추가 정보를 제공하려면 멤버십 사용자를 상속받을 수 있지만 나머지 코드를 특정 제공 업체에 연결합니다.

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