2016-10-04 1 views
4

вот мой случай.Сообщение об ошибке Chage для проверки политики паролей в System.Web.Security.MembershipProvider (EPiServer)

Я использую EPiServer 9 и я настроил SqlServerMembershipProvider следующим образом:

<add name="SqlServerMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
        connectionStringName="EPiServerXYZ" 
        enablePasswordRetrieval="false" 
        enablePasswordReset="true" 
        requiresQuestionAndAnswer="false" 
        requiresUniqueEmail="false" 
        maxInvalidPasswordAttempts="5" 
        minRequiredPasswordLength="8" 
        minRequiredNonalphanumericCharacters="1" 
        passwordAttemptWindow="10" 
        applicationName="/" 
        passwordStrengthRegularExpression="^.*(?=.{8,})(?=.*\d)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^\w\d\s]).*$" /> 

Все работает отлично, валидации и различные сценарии.

Наша проблема заключается в том, что сообщение об ошибке отображается поставщиком членства создается с помощью конфигурации и заканчивает тем, что дает не дружественным к пользователю сообщения, такие как:

  • «Неверный пароль, минимальная длина: 8, минимальные не буквенно-цифровые символы: 1 '
  • «Номера буквенных символов в« newPassword »должны быть больше или равно« 1 ». Имя параметра: newPassword '
  • ' Параметр 'newPassword' не соответствует регулярному выражению, указанному в файле конфигурации. Имя параметра: Новый_пароль»

error message password validation when creating user in episerver

Я хотел бы, чтобы установить сообщение об ошибке пользовательский, который действительно объясняет пользователю все требования, которые мы имеем в регулярном выражении, которое используется для проверки пароля.

Единственный способ, которым я могу думать об этом до сих пор, заключается в реализации/расширении текущего провайдера, который мы используем, только для того, чтобы установить собственное сообщение об ошибке, когда что-то пойдет не так с валидацией, но я думаю, что может быть другое лучше/проще способ сделать это.

Заранее благодарен!

+1

Пользовательский может быть лучшим маршрутом, и вам, возможно, не придется выполнять многое, кроме переопределения ValidateUser(). Если это недействительно, просто выполните управление своим пользовательским сообщением. Попробуйте это для стартеров: http://stackoverflow.com/a/12094556/2779990 –

ответ

0

Я согласен с вашей специальной идеей сообщения об ошибке.

Рассмотрите возможность отображения div с сообщениями об ошибках UI, которые скрыты до тех пор, пока не будет обнаружена ошибка ввода. Это может быть расположено справа от текстовых полей ввода или над кнопкой отправки. Отображаемые сообщения об ошибках будут зависеть от обнаруженных ошибок ввода.

Для любой ошибки ввода пароля/подтверждения пароля укажите общее сообщение об ошибке пароля, а затем укажите требования к вводу пароля, перечисленные в вашем вопросе.

Дополнительные сообщения об ошибках могут быть добавлены для ошибок ввода имени пользователя и адреса электронной почты.

+1

Скриншот имеет функцию OOTB Episerver, и эта часть пользовательского интерфейса не поддается настраиванию. :/Таким образом, я думаю, что простейший подход - это реализация, переопределяющая сообщение об ошибке по умолчанию. –

+0

Хорошая точка, поэтому создание нового div для сообщений об ошибках может оказаться нецелесообразным для Episerver. Я надеюсь, что у Episerver есть средства для отображения пользовательского сообщения об ошибке, хотя я не знаю, что это так. – JohnH

Смежные вопросы