2011-04-29 2 views
8

MembershipProvider은 작은 것을 제외하고는 정말 효과적이라는 커스텀을 작성했습니다. MembershipUser 클래스를 조금 확장하고 싶습니다.자신의 속성을 사용하여 .NET MembershipUser 확장하기

기본값은 다음과 같습니다

MembershipUser member = new MembershipUser(
    providerName: Membership.Provider.Name, 
    name: db.userName, 
    guid: db.userGuid, 
    company: db.companyName, 
    companyGuid: db.companyGuid, 
    whatever: db.whatever, 
    providerUserKey: null, 
    email: db.userEmail, 
    passwordQuestion: "", 
    comment: "", 
    isApproved: true, 
    isLockedOut: false, 
    creationDate: db.creationDate, 
    lastLoginDate: db.lastLoginDate, 
    lastActivityDate: db.lastActivityDate, 
    lastPasswordChangedDate: DateTime.Now, 
    lastLockoutDate: DateTime.Now 
    ); 

기본 클래스를 확장 할 수있는 방법이 있나요 :

MembershipUser member = new MembershipUser(
    providerName: Membership.Provider.Name, 
    name: db.userName, 
    providerUserKey: null, 
    email: db.userEmail, 
    passwordQuestion: "", 
    comment: "", 
    isApproved: true, 
    isLockedOut: false, 
    creationDate: db.creationDate, 
    lastLoginDate: db.lastLoginDate, 
    lastActivityDate: db.lastActivityDate, 
    lastPasswordChangedDate: DateTime.Now, 
    lastLockoutDate: DateTime.Now 
    ); 

하지만 내가 좋아하는 것, 그것이이 뭔가를 조금 확장?

답변

8

물론!

그냥 MembershipUser를 확장하는 클래스를 만듭니다에서

public class CustomUser : MembershipUser 
{ 
    // your custom properties/methods go here 
} 

당신의 CustomMembershipProvider 당신이 당신의 CustomUser 객체를 반환 할 수 있습니다. 클라이언트 응용 프로그램에서 CustomUser으로 캐스트하면됩니다. 그래서 같이 :

var myUserObject = Membership.GetUser() as CustomUser; 
4

MembershipUser은 봉인 된 클래스가 아니므로이 클래스를 상속 한 새로운 클래스를 만들면됩니다. 기존 기능을 유지하고 필요한 추가 기능 만 추가하십시오.

확장하는 경우 새 클래스를 반환하는 멤버 자격 공급자를 직접 작성하거나 기본 공급자를 호출 할 때마다 새 클래스를 변환해야합니다.

2
  • 자신의 공급자 만들기,
System.Web.Security.MembershipUser
  • 에서 상속, 자신의 회원 정보를 생성 System.Web.Security.MembershipProvider
  • 에서 상속 CreateUser(), GetUser()에서 클래스를 돌려줍니다
  • 관련 문제