I've written a custom MembershipProvider
that works really great except one little thing, I'd like to extend the MembershipUser
class a bit.
The default looks like this:
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
);
But I'd like to extend it a bit, something like this:
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
);
Is there a way to extend the default class?
Of course!
Just create a class that extends MembershipUser
:
public class CustomUser : MembershipUser
{
// your custom properties/methods go here
}
In your CustomMembershipProvider
you can return your CustomUser
object. You just have to cast in the client application to CustomUser
. Like so:
var myUserObject = Membership.GetUser() as CustomUser;
MembershipUser isn't a sealed class, so you can just create a new class that inherits from it. Keep the existing functionality and only add the extra stuff you need.
If you do extend it, you'll either have to write your own membership provider that returns your new class, or convert from one to the other after each call into the default providers.
System.Web.Security.MembershipProvider
System.Web.Security.MembershipUser
CreateUser()
, GetUser()
, etcIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With