Estoy dando vueltas en círculos y necesito ayuda para implementar un usuario de membresía personalizado para que pueda agregar mis propias propiedades personalizadas al usuario de membresía.Implementación del usuario de membresía personalizado
He estado siguiendo el ejemplo en este sitio: How to: Implement a Custom Membership User
El problema que estoy teniendo es en el constructor de CustomMembershipUser, creo.
My CustomMembershipUser tiene estas tres propiedades adicionales: firstName, middleName, lastName.
public class CustomMembershipProvider : MembershipProvider
{
public override MembershipUser GetUser(string username, bool userIsOnline)
{
//.... Get data from database
MembershipUser baseUser = new MembershipUser(this.Name,
username,
userId,
email,
"",
comment,
isApproved,
isLockedOut,
dtCreate,
dtLastLogin,
dtLastActivity,
DateTime.Now,
dtLastLockoutDate);
return new CustomMembershipUser(baseUser, firstName, middleName, lastName)
}
}
public class CustomMembershipUser : MembershipUser
{
private string _firstName;
public string FirstName { get { return _firstName; } set { _firstName = value; } }
private string _middleName;
public string MiddleName { get { return _middleName; } set { _middleName = value; } }
private string _lastName;
public string LastName { get { return _lastName; } set { _lastName = value; } }
public CustomMembershipUser(MembershipUser baseuser, string firstname, string middlename, string lastname)
{
_firstName = firstname;
_middleName = middlename;
_lastName = lastname;
new CustomMembershipUser(baseuser); // DO I NEED THIS?? HOW TO IMPLEMENT??
}
}
La llamo así:
MembershipUser mu = Membership.GetUser(UserName);
CustomMembershipProvider p = (CustomMembershipProvider)Membership.Provider;
MembershipUser memUser = p.GetUser(UserName, true);
object userId = memUser.ProviderUserKey;
El ProviderUserKey es nulo y también lo son los otros valores.
¿Cómo puedo obtener las Propiedades adicionales que agregué?
Gracias
Jimmy, ¡Gracias! Tu ejemplo dejó las cosas más claras y ahora la implementación está funcionando. ¿Puede publicar el código para el constructor de su CustomMembership? Gracias a los demás que han proporcionado orientación sobre el uso de perfiles y el intercambio de sus experiencias. – Picflight
Picflight, no estoy muy seguro de lo que quiere decir con "constructor para CustomMembership". Mi clase CustomerMembershipProvider no tiene un constructor. – jimmystormig
Me gustaría señalar para cualquier persona que encuentre esta pregunta que, aunque esta es la respuesta "aceptada", esta es * NO * la forma correcta de llevar a cabo esta tarea: cualquier propiedad adicional que pertenezca a un usuario debe almacenarse en un perfil, lo que le permite lograr esto y mucho más con mucho menos esfuerzo y sin romper el modelo como lo hace el código que se muestra aquí. Ver mi respuesta a continuación para más información. –