用自己的属性扩展.net MembershipUser

本文关键字:net MembershipUser 扩展 属性 自己的 | 更新日期: 2023-09-27 17:54:02

我已经写了一个自定义的MembershipProvider,除了一件小事,我想扩展MembershipUser类一点。

默认值如下:

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
    );

但是我想把它扩展一下,像这样:

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
    );

是否有一种方法来扩展默认类?

用自己的属性扩展.net MembershipUser

当然!

创建一个类扩展MembershipUser:

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

在你的CustomMembershipProvider中你可以返回你的CustomUser对象。您只需要在客户端应用程序中强制转换为CustomUser。像这样:

var myUserObject = Membership.GetUser() as CustomUser;

MembershipUser不是一个密封类,所以您可以创建一个从它继承的新类。保留现有的功能,只添加你需要的额外的东西。

如果您扩展它,您要么必须编写您自己的成员提供程序来返回您的新类,要么在每次调用到默认提供程序后从一个转换为另一个。

  • 创建自己的提供商,继承System.Web.Security.MembershipProvider
  • 创建自己的会员信息,继承System.Web.Security.MembershipUser
  • CreateUser(), GetUser()等返回类