2010-06-10 22 views
6

I codice in C# (ASP.NET) e sto utilizzando l'autenticazione Forms.
Vorrei sapere qual è il metodo migliore per modificare una password utente senza utilizzare asp: controllo ChangePassword.
Non desidero utilizzare il metodo di reimpostazione della password.
Voglio solo prendere la password che ho nella mia casella di testo e sostituirla con la mia password precedente.
Si prega di notare che il PasswordFormat uso è passwordFormat = "hash"
alcuni frammenti di codice sarebbe utile

Edit:Cambia password utente in Autenticazione moduli ASP.NET

Nel mio web.config, ho impostato enablePasswordRetrieval = "false"
I utilizzato il seguente metodo

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

mi dà l'errore,

Questo provider di appartenenze non è stato configurato per supportare il recupero della password .

Cosa si può fare per risolvere questi problemi? Mi piacerebbe davvero che il mio PasswordFormat fosse hash stesso.

saluti,
Naveen Jose

risposta

18

Trovato risolto. Grazie al mio collega sviluppatore.

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

Non posso dire che mi è piaciuto molto.
Pensavo che ResetPassword() avrebbe restituito un bool.

+0

Restituisce una stringa con una nuova password generata casualmente http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser. resetpassword.aspx –

+1

@JPHellemons: ho detto che pensavo :) – naveen

2

il valore hash per le password vengono solitamente memorizzati unicamente dalle provider di appartenenze asp.net, quindi non è possibile recuperare la password originale. È possibile modificare questo comportamento in base alla configurazione, ma non è consigliato.
Basta chiedere all'utente di inserire la vecchia password anche durante la modifica della password. È possibile utilizzare la vecchia password immessa dall'utente nel metodo User.ChangePassword e dovrebbe funzionare correttamente.

+0

La mia intenzione era di creare una password di recupero per password perse – naveen

1

Questo provider di appartenenze non è stato configurato per supportare il recupero della password.

Il messaggio precedente viene visualizzato perché il formato della password sarà saltato e quindi non è possibile ottenere la password dell'utente. Se vuoi farlo cambia il formato della password e riprova.

+0

grazie a dileep. ero più curioso su come recuperare la vecchia password e 'ChangePassword' richiede la vecchia password come parametro. – naveen

1

Sul off possibilità che qualcuno sta usando l'ApplicationUser e non l'appartenenza - come mi è stato perché non ho voglia di impostare un provider di appartenenze - è possibile modificare la password in questo modo:

  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) 

Spero che questo aiuti qualcuno

Problemi correlati