Изменить пароль пользователя в ASP.NET Forms Authentication - PullRequest
7 голосов
/ 10 июня 2010

Я пишу код на C # (ASP.NET) и использую проверку подлинности с помощью форм.Я хотел бы знать, какой метод является лучшим для изменения пароля пользователя без использования элемента управления asp: ChangePassword.Я не хочу использовать метод сброса пароля.Я просто хочу взять пароль, который у меня есть, в моем текстовом поле и заменить его старым паролем.Обратите внимание, что PasswordFormat, который я использую, это passwordFormat = "Hashed"Некоторые фрагменты кода будут полезныРедактировать:

В моем файле web.config я установил enablePasswordRetrieval = "false"Я использовал следующий метод

var myUser = Membership.GetUser(userID);
bool isChangeSuccess = myUser.ChangePassword(
    myUser.GetPassword(),
    ActivateUserPasswordText.Text.Trim());

Это дает мне ошибку,

Этот поставщик членства не настроен для поддержки восстановления пароля.

Что можетбыть сделано, чтобы решить эти проблемы?Мне бы очень хотелось, чтобы мой PasswordFormat был сам по себе хэшем.

С уважением,Навин Хосе

Ответы [ 5 ]

18 голосов
/ 11 июня 2010

Понял. Спасибо моему коллеге-разработчику.

var myUser = Membership.GetUser(userID);
bool isChangeSuccess = myUser.ChangePassword(
    myUser.ResetPassword(),
    ActivateUserPasswordText.Text.Trim());

Не могу сказать, что мне это очень понравилось.
Я думал, что ResetPassword () будет возвращать bool.

3 голосов
/ 10 июня 2010

Предполагается, что вы используете элементы безопасности ASP.NET.

System.Web.Security.MembershipProvider.ChangePassword метод

2 голосов
/ 10 июня 2010

Поставщик членства asp.net обычно хранит только значение Hash для паролей, поэтому восстановить исходный пароль невозможно. Можно изменить это поведение в зависимости от конфигурации, но это не рекомендуется.
Просто попросите пользователя ввести старый пароль также при смене пароля. Вы можете использовать старый пароль, введенный пользователем в методе User.ChangePassword, и он должен работать нормально.

1 голос
/ 12 марта 2014

На случай, если кто-то использует ApplicationUser, а не Членство - как я сделал, потому что я не хотел устанавливать поставщика членства - вы можете изменить пароль следующим образом:

            Dim manager = New UserManager()
            Dim userChange As ApplicationUser = manager.FindById(IDUser)

            userChange.PasswordHash = manager.PasswordHasher.HashPassword(newPassword.Value)
            Dim val As Object = manager.Update(userChange)

Надеюсь, этопомогает кому-то

1 голос
/ 03 апреля 2012

Этот поставщик членства не был настроен для поддержки восстановления пароля.

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

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