Управление ChangePassword без провайдера - PullRequest
1 голос
/ 17 марта 2010

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

Спасибо, Евгений.

EDIT:

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

Это список функций, достаточный для работы этого элемента управления:

public bool ChangePassword(string username, string oldPassword, string newPassword) 
public MembershipUser GetUser(string username, bool userIsOnline)
public int MinRequiredNonAlphanumericCharacters { get; }
public int MinRequiredPasswordLength { get; }

Последние два используются только для сообщения об ошибке, если вы вернете false из функции ChangePassword.

1 Ответ

2 голосов
/ 17 марта 2010

Глядя на источник .NET 3.5 через отражатель, когда событие кнопки ChangePassword обнаруживается защищенным OnBubbleEvent, оно вызывает AttemptChangePassword (). Реализация этого метода выглядит примерно так:

private void AttemptChangePassword() {
    ...
    this.OnChangingPassword(loginCancelEventArgs);
    if(!e.Cancel) {
        MembershipProvider provider = LoginUtil.GetProvider(this.MembershipProvider);
        ...
}

Похоже, вы могли бы:

  1. Добавление обработчика к событию ChangingPassword
  2. В этом обработчике событий используйте свойства UserName и NewPassword элемента управления для выполнения своей собственной пользовательской работы.
  3. В случае успеха либо перенаправьте на новый URL-адрес, либо установите флаг отмены в аргументах события и вручную скрыте элемент управления ChangePassword. Похоже, не существует простого способа использовать SuccessView с этой техникой.

Похоже, что это в некоторой степени возможно, но элемент управления определенно не был разработан с учетом этого использования - он довольно жестко привязан к MembershipProvider.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...