2011-09-23 26 views
9

im utilizzando il modulo mvc per dare all'utente la possibilità di modificare i propri dati nel database. Tutto va bene, tranne la password. Quando im ottenere il valore Password dal controller del database lo passa in vista, ma la vista non lo mostra.Asp.Net MVC password per

<div class="editor-field"> 
      <%: Html.PasswordFor(model => model.Password) %> 
      <%: Html.ValidationMessageFor(model => model.Password) %> 
</div> 

Posso salvare la password ma non è mai visualizzata nella vista interna. Ad ogni modo se cambio PasswordPer su TextBoxPer funziona, ma posso vedere la password :(

All'interno dell'applicazione, do all'utente la possibilità di configurare qualche altra funzione, è possibile configurare il proprio account di posta elettronica esterno. , la casella con la password è vuota Se invio il modulo, il database salverà la password vuota - non voglio salvare null nella colonna della password, se l'utente non vuole cambiare la password, dovrebbe essere lo stesso di prima, anch'io ho bisogno di evitare mostrandolo all'utente

+1

Questo è di progettazione (restrizioni di sicurezza). –

+0

controlla [this] (http://stackoverflow.com/a/30724210/2218697) se ** password reimposta in bianco ** – stom

risposta

0

Qual è il problema? Di solito non si mostra mai una password, ne si memorizza una nuova e se si dimentica si invia un collegamento per crearne uno nuovo ma in nessun caso si mostra il vecchio non in chiaro e non con punti ...

4

Questo è come dovrebbe funzionare. I campi password non dovrebbero mai mostrare dati.

Se si stanno facendo le password correttamente, non si è nemmeno in grado di visualizzarle. Si dovrebbe fare una crittografia unidirezionale (chiamata hash) dei dati e memorizzare solo il valore hash nel database. In questo modo non può mai essere non criptato. Quando un utente effettua il login, basta semplicemente inserire la password che ha inserito e confrontarla con quella memorizzata.

4

Ok, questo è un vecchio, ma dal momento che ho solo bisogno di fare lo stesso per le impostazioni di posta elettronica. Soluzione semplice, aggiungere htmlAttributes in questo modo:

<div class="editor-field"> 
     <%: Html.PasswordFor(model => model.Password) %> 
     <%: Html.ValidationMessageFor(model => model.Password, new { value=model.Password }) %> 
</div> 

Questo imposterà il valore della password nel immissione della password.

Il ragazzo chiede una risposta, non critica. Non si tratta di "fare password correttamente" o meno, ciò che cerca di realizzare richiede di salvare una password chiara, in modo che possa essere inviata a un server di posta elettronica o altro sistema in cui l'invio di un valore hash fallirebbe.

4

La password passata in questo modo:

<%: Html.ValidationMessageFor(model => model.Password, new { value=model.Password }) %> 

si può vedere nel codice sorgente della pagina da qualsiasi Browser U_U

3

approccio normale per la modifica delle password da parte dell'utente è quello di fornire 3 vuoto campi password (input type = password):

  1. Nuova password
  2. confer m nuova password
  3. Vecchia password

Dopo utente invia i dati sul server, prima si verifica se vecchia password è corretta (poiché non si vuole qualcun altro a cambiare la password se l'utente dimentica di logout), poi controllare se l'utente ha digitato la nuova password e confermata correttamente (poiché i caratteri sono mascherati nei campi della password e solo POI si aggiorna il database.

È necessario non eseguire MAI la password dell'utente in codice HTML.Si applica anche ai casi in cui la convalida lato server fallisce (lunghezza della password o complessità). Rendi sempre i campi di password vuoto .

+0

Link utili: [Come confrontare password e confermare password] (http: // aspdotnet-kishore .blogspot.de/2013/10/how-can-i-confronto-parola-e-confirm.html). – dee

0

Un'altra opzione qui, se si utilizza la sintassi del rasoio, è di utilizzare JQuery per popolare il campo della password. Qualcosa di simile a quanto segue funzionerà:

$(document).ready(function() { 
    $('#Password').val('@Model.Password'); 
}); 
9

Ho affrontato lo stesso problema, e rilascio fissai dalla soluzione qui di seguito, potrebbe vi aiuterà a

La classe modello

public class yourmodel 

{ 

    [DataType(DataType.Password)] 

    public string Password {get;set; } 

} 

View pagina

@Html.EditorFor(model => model.Password)