Как переопределить createUser () метод членства ASP .NET для отображения пользовательского сообщения об ошибке? - PullRequest
0 голосов
/ 10 января 2012

Как переопределить метод членства createUser () для отображения пользовательского сообщения об ошибке, когда проверка пароля не удается ??
I Использовал инструмент администрирования веб-сайта, который предоставляет интерфейс, подобный мастеру, для создания новых пользователей. (Чтобы запустить этот инструмент, щелкните Конфигурация ASP.NET в меню Веб-сайт в Microsoft Visual Studio)

Файл Web.Config:

 <membership defaultProvider="MyMembershipProvider">
        <providers>
            <clear />
            <add name="MyMembershipProvider" type="BlueDDApp.Controllers.MyMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" minRequiredPasswordLength="8"  minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$"  passwordAttemptWindow="10" applicationName="/" />
        </providers>
    </membership>



Класс пользовательского членства ::

    public class MyMembershipProvider : SqlMembershipProvider
{
    public MyMembershipProvider()
    {
        //Membership.ValidatingPassword += new MembershipValidatePasswordEventHandler(OnValidatePassword);
        ValidatingPassword += ValidatePassword;

    }
   /* public override MembershipUser CreateUser( string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
    {
        ValidatingPassword += ValidatePassword;

        return base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
    }*/
    void ValidatePassword(object sender, ValidatePasswordEventArgs e)
    {
        Regex check = new Regex("^(?i)(?!.*" + e.UserName + ").*$");
        if (!check.IsMatch(e.Password))
        {
            e.FailureInformation = new HttpException("blah blah");
            e.Cancel = true;

        }

    }
}

Ответы [ 2 ]

0 голосов
/ 18 июля 2012

Вот отличный пример для пользовательского MembershipUser:

Пример реализации поставщика членства

0 голосов
/ 10 января 2012

Если вы используете элемент управления asp: CreateUserWizard, который, как я полагаю, вы используете (он подключится к провайдеру членства из вашего web.config), то:

В режиме «Дизайн», если вы щелкнете по этому элементу управления, в верхнем правом углу у вас появится значок, своего рода стрелка, и там вы можете выбрать опцию «Настроить шаг создания пользователя». Это преобразует элемент управления, расширяя его в отдельные элементы управления, которые используются внутри. Теперь вы можете получить доступ к сообщению об ошибке (буквальное управление) и изменить его для отображения статического сообщения или отображения динамически изменяющихся сообщений из кода.

Вы также можете добавить события в CreateUserWizard, такие как CreateUser, CreateUserError и CreatedUser, которые позволят вам настроить поведение и то, как создание используется еще больше.

...