Ich baue einen benutzerdefinierten MembershipProvider, genauer gesagt die GetUser-Funktion.
Dafür habe ich einen eigenen MembershipUser.
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)
{
}
}
In der GetUser Funktion des MembershipProviders hole ich mir die Benutzerdaten und füge sie in den CustomMemberShipUser ein.
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 ;
}
Wie Sie sehen können, verwende ich die E-Mail als Namen für das MemberShip und die meisten anderen Parameter brauche ich nicht.
Gibt es eine Möglichkeit, den Anruf zu vereinfachen? Ich möchte den MembershipUser nicht mit leeren Strings und minimalen Datumswerten initialisieren.
Vielen Dank im Voraus