Sur mesure MembershipUser avec des paramètres uniquement nécessaires
-
25-10-2019 - |
Question
Je construis un MembershipProvider personnalisé plus précisément la fonction GetUser.
i ont un marché avoisinant MembershipUser personnalisé.
public class CustomMemberShipUser : MembershipUser
{
public CustomMemberShipUser (
string providerName,
string email,
object providerUserKey,
string name,
string passwordQuestion,
string comment,
bool isApproved,
bool isLockedOut,
DateTime creationDate,
DateTime lastLoginDate,
DateTime lastActivityDate,
DateTime lastPasswordChangedDate,
DateTime lastLockoutDate
): base(
providerName, email, providerUserKey, name, passwordQuestion,
comment, isApproved, isLockedOut, creationDate, lastLoginDate,
lastActivityDate, lastPasswordChangedDate, lastLockoutDate)
{
}
}
Dans la fonction GetUser du MembershipProvider i obtenir les données utilisateur et les mettre dans le CustomMemberShipUser.
public override MembershipUser GetUser(string email, bool userIsOnline)
{
User u = _db.Users.Where(x => x.Email == email).First();
CustomMemberShipUser customUser = new CustomMemberShipUser (
"CustomMemberShipUser ",
u.Email,
u.id,
u.Email,
"",
"",
true,
false,
u.CreateDate,
DateTime.MinValue,
DateTime.MinValue,
DateTime.MinValue,
DateTime.MinValue);
return customUser ;
}
Comme vous pouvez le voir j'utiliser l'e-mail comme nom pour les membres et je ne ont pas besoin la plupart des autres paramètres.
Y at-il un moyen de rendre l'appel plus simple? Je ne veux pas l'initialiser MembershipUser avec des chaînes vides et les valeurs minimales date.
Merci à l'avance
La solution
Pouvez-vous adapter votre CustomMembershipUser pour faire le « padding » pour vous
public class CustomMemberShipUser : MembershipUser
{
public CustomMemberShipUser (
string email,
object providerUserKey,
): base(
"CustomMemberShipUser", email, providerUserKey, email, String.Empty,
String.Empty, true, false, DateTime.MinValue, DateTime.MinValue,
DateTime.MinValue, DateTime.MinValue, DateTime.MinValue)
{
}
}
Il ne résout pas le problème, mais il ranger votre fournisseur qui deviendra
public override MembershipUser GetUser(string email, bool userIsOnline)
{
User u = _db.Users.Where(x => x.Email == email).First();
CustomMemberShipUser customUser = new CustomMemberShipUser (u.Email, u.id);
return customUser ;
}
Je suppose que votre CustomMembershipUser expose quelques propriétés supplémentaires que vous ne nous montrez. Comme il vous se pourrait que renvoyer une MembershipUser. Avec ce qui précède le seul avantage de votre CustomMembershipUser vous donne est la construction de nettoyage dans votre CustomMembershipProvider