Я хочу унаследовать SqlMembershipProvider, настроить параметры членства для использования производного настраиваемого поставщика и запретить кому-либо звонить Membership.CreateUser()
и Membership.DeleteUser()
.
У меня есть внешнее приложение, которое предложит пользователю добавить/ delete механизм, который делает больше, чем встроенный членство.
Мне удалось переопределить CreateUser () и DeleteUser (), чтобы выдать NotSupportedExceptions
, когда Membership.CreateUser () или Membership.DeleteUser ()называется.
Затем я попробовал 2 пользовательских метода и каждый из них вызывал base.CreateUser()
и base.DeleteUser()
, но получил нулевые исключения.Я считаю, что проблема в том, что базовые методы доступны только переопределенным функциям, а не пользовательским.
Мой код указан ниже:
public class UserMembershipSQL : SqlMembershipProvider
{
internal MembershipUser CreateUserCustom(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
//do stuff here -- not accessible by Membership.CreateUser
//currently throws a null exception even though all parameters are set properly
return base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
}
internal bool DeleteUserCustom(string username, bool deleteAllRelatedData)
{
//do stuff here -- not accessible by Membership.DeleteUser
return base.DeleteUser(username, deleteAllRelatedData);
}
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
throw new NotSupportedException();
}
public override bool DeleteUser(string username, bool deleteAllRelatedData)
{
throw new NotSupportedException();
}
}
Спасибо.