Мы внедрили пользовательский поставщик членства и сменили пароль на веб-странице, которая использует этот провайдер. Метод ChangePassword в этом классе поставщика членства проверяет некоторую бизнес-логику о силе и достоверности пароля, подключаясь к внешнему веб-сервису. Webservice имеет возможность возвращать точно, что не так с новым паролем, если он есть (проблемы с длительностью, специальный символ и т. Д.).Членство в поставщике ChangePassword Метод Тип возврата Задача
Теперь сигнатура метода ChangePassword, который должен быть переопределен с помощью настраиваемой провайдера:
public override bool ChangePassword(string username, string oldPassword, string newPassword)
Таким образом, даже если я знаю точную проблему с новым паролем поставки пользователь, я не могу чтобы отобразить его на веб-странице, потому что я могу только вернуть истину или ложь из этого метода, а управление паролем изменения затем берет на себя и выполняет свою собственную магию в зависимости от логического возвращаемого значения. Я могу подключить событие OnChangePasswordError
элемента управления ChangePassword
, чтобы показать статическое сообщение об ошибке, или я могу даже настроить свойство этого элемента управления на некоторую жестко закодированную строку при возникновении ошибки, но я не могу предоставить пользователю то, что точно не соответствует паролю, который они поставили.
protected void OnPasswordChangeError(object sender, EventArgs e)
{
throw new MembershipPasswordException("Tell user what exactly is wrong with the password they supplied");
}
MembershipProvider
класс имеет ValidatingPassword
событие, что поднимается ДО пароль изменен, и я могу бросить исключение здесь, проверяя, если пароль соответствует критериям, но все же это исключение, кажется, не будет принят к элементу управления ChangePassword. Вот код для ValidatingPassword EventHandler:
void MyMembershipProvider_ValidatingPassword(object sender, ValidatePasswordEventArgs e)
{
//if password not valid
e.Cancel = true;
e.FailureInformation = new MembershipPasswordException();
e.FailureInformation;
}
как послать определенную информацию из метода ChangePassword класса поставщика членства к контролю ChangePassword для отображения правильного, не являющееся статического/жёстко пароль сообщения об ошибках изменения к пользователю ? Есть ли способ подключить ValidatePasswordEventArgs к EventArgs в EventHandler для метода OnChangePassword, чтобы я мог получить информацию об ошибке в элементе управления ChangePassword?
Из моего первоначального исследования это не представляется возможным. Хотя я чувствую, что команда MS не упустила бы это из виду, и должен быть способ.
Несколько указателей:
MembershipUser.ChangePassword fails without warning http://forums.asp.net/t/983613.aspx
О, мои глаза! Этот заголовок горит! Пожалуйста, положите немного. –
Спасибо большое! –
Я бы не отказался от этого, но я думаю, вам нужно придумать взломать, как записать его в базу данных или что-то в этом роде. – Greg