Custom MembershipUser только с необходимыми параметрами
Я строю пользовательский MembershipProvider, точнее функцию GetUser.
Для этого у меня есть пользовательское членство.
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)
{
}
}
В функции GetUser MembershipProvider я получаю пользовательские данные и помещаю их в 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 ;
}
Как вы можете видеть, я использую электронную почту в качестве имени для MemberShip, и мне не нужны большинство других параметров.
Есть ли способ сделать звонок проще? Я не хочу инициализировать MembershipUser с пустыми строками и минимальными значениями Date.
заранее спасибо
1 ответ
Не могли бы вы адаптировать свой CustomMembershipUser, чтобы сделать "заполнение" для вас
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)
{
}
}
Это не решит проблему, но приведёт в порядок вашего провайдера, который станет
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 ;
}
Я предполагаю, что ваш CustomMembershipUser раскрывает некоторые дополнительные свойства, которые вы нам не показываете. В таком виде вы можете просто вернуть MembershipUser. Благодаря вышеперечисленному единственное преимущество, которое дает вам CustomMembershipUser, - более чистая конструкция в вашем CustomMembershipProvider.