После долгих попыток получить ответ на мой вопрос "Должен ли я написать собственную реализацию MembershipProvider или создать собственную систему?" поэтому я решил, что не так уж и плохо идти по пути MembershipProvider и начать писать свой членский провайдер. Но в то время я чувствую некоторые проблемы.
Например, в моей системе нет имен пользователей. Письма являются именами пользователей. Поэтому метод CreateUser должен выглядеть следующим образом:
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
bool userExists = GetUser(email);
if (userExists) {
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
bool? tryExists = regTryExists(email);
if (tryExists.HasValue && tryExists.Value && !userExists)
{
UserRepository.CreateUser(email, password);
status = MembershipCreateStatus.Success;
return GetUser(email);
}
return null;
}
Кроме того, мне не нужны методы GetUserNameByEmail
, FindUsersByName
:
public override string GetUserNameByEmail(string email)
{
return email;
}
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
{
throw new NotImplementedException();
}
Так что здесь мне не нужны username, passwordQuestion, passwordAnswer, isApproved
аргументы.
Также в моей системе нет пользовательских вопросов, поэтому мне не нужны такие методы, как
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
{
return false;
}
public override string ResetPassword(string username, string answer)
{
throw new NotImplementedException();
}
И это только часть ненужной и громоздкой системы членства. Это не так реально, как я хочу.
Итак, вопрос в том, стоит ли идти с MembershipProvider? Не могли бы вы привести меня? Есть ли хорошие преимущества для MembershipSystem, которые делают его действительно ценностной системой?