2010-06-10 14 views
6

Kod w języku C# (ASP.NET) i używam uwierzytelniania formularzy.
Chciałbym wiedzieć, która jest najlepsza metoda zmiany hasła użytkownika bez użycia kontrolki asp: ChangePassword.
Nie chcę używać metody resetowania hasła.
Po prostu chcę pobrać hasło, które mam wewnątrz mojego pola tekstowego i zastąpić je starszym hasłem.
Należy pamiętać, że passwordFormat używam to passwordFormat = "zakodowane"
Niektóre fragmenty kodu byłoby pomocne

Edit:Zmiana hasła użytkownika w ASP.NET Forms Authentication

W moim web.config, mam ustawione enablePasswordRetrieval = "false"
I wykorzystane następujące metody

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

daje mi błąd,

Ten dostawca członkostwa nie został skonfigurowany do obsługi pobierania hasła .

Co można zrobić, aby rozwiązać te problemy? Naprawdę bardzo chciałbym, aby mój PasswordFormat był hash.

Pozdrawiam,
Naveen Jose

Odpowiedz

18

Rozwiązane. Dzięki dla mojego kolegi programisty.

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

Nie mogę powiedzieć, że podobało mi się to bardzo.
Myślałem, że ResetPassword() będzie zwracanie bool.

+0

Zwraca ciąg z losowym wygenerowanym nowym hasłem http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser. resetpassword.aspx –

+1

@JPHellemons: Powiedziałem, że myślałem :) – naveen

2

tylko wartość skrótu dla haseł są zwykle przechowywane przez dostawcę członkostwa ASP.NET, więc nie jest możliwe, aby odzyskać oryginalne hasło. Można zmienić to zachowanie według konfiguracji, ale nie jest to zalecane.
Po prostu poproś użytkownika o wpisanie starego hasła również podczas zmiany hasła. Możesz użyć starego hasła wprowadzonego przez użytkownika w metodzie User.ChangePassword i powinno działać poprawnie.

+0

Moim zamiarem było stworzenie hasła do odzyskiwania utraconych haseł. – naveen

1

Ten dostawca członkostwa nie został skonfigurowany do obsługi odzyskiwania hasła.

Powyższy komunikat jest wyświetlany, ponieważ jego format hasła będzie słony, a więc nie będzie można uzyskać hasła użytkownika. Jeśli chcesz to zrobić, zmień format hasła i spróbuj ponownie.

+0

dzięki dileep. byłem bardziej ciekawy jak odzyskać stare hasło, a 'ChangePassword' wymaga starego hasła jako jego parametru. – naveen

1

Na kogoś off możliwe jest przy użyciu ApplicationUser a nie członkostwa - jak ja, bo nie chce, aby ustawić dostawcę członkostwa - może zmienić hasło w ten sposób:

  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) 

Hope this helps ktoś

Powiązane problemy