2010-06-10 2 views
6

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

Edit:Изменение пароля пользователя в ASP.NET Forms Authentication

В моей web.config, я поставил EnablePasswordRetrieval = "ложь"
I используется следующий метод

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

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

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

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

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

ответ

18

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

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

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

+0

Он возвращает строку со случайным сгенерированным новым паролем http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser. resetpassword.aspx –

+1

@JPHellemons: Я сказал, что думал :) – naveen

2

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

+0

Мое намерение состояло в том, чтобы создать пароль для получения потерянных паролей – naveen

1

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

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

+0

спасибо dileep. Мне было любопытно узнать, как восстановить старый пароль, а «ChangePassword» требует старого пароля в качестве его параметра. – naveen

1

На авось кто-то использует 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) 

Надеется, что это помогает кто-то

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