2011-09-23 23 views
9

im utilizando el formulario mvc para dar al usuario la posibilidad de cambiar sus datos en la base de datos. Todo está bien excepto la contraseña. Cuando recibo el valor de Contraseña del controlador de la base de datos, se lo muestra, pero la vista no lo muestra.Contraseña de Asp.Net MVC para

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

Puedo guardar la contraseña pero nunca se muestra dentro de la vista. De todos modos si cambio PasswordFor a TextBoxFor funciona bien, pero puedo ver la contraseña :(

Dentro de la aplicación, le doy al usuario la posibilidad de configurar alguna otra función, puede configurar su cuenta de correo electrónico externa cuando se muestra la vista con formulario , la casilla con la contraseña está vacía. Si envío el formulario, la base de datos guardará la contraseña vacía; no quiero guardar la columna null en la contraseña, si el usuario no desea cambiar la contraseña, debería ser la misma que antes, también debo evitar mostrándolo al usuario

+1

Eso es por diseño (restricciones de seguridad). –

+0

marque [this] (http://stackoverflow.com/a/30724210/2218697) si ** la contraseña se restablece en blanco ** – stom

Respuesta

0

¿Cuál es el problema? Generalmente nunca muestra una contraseña. Almacena una nueva y si la olvida, envía un enlace para crear una nueva pero en ningún caso muestra la anterior sin texto claro y no con puntos ...

4

Así se supone que funciona. Los campos de contraseña nunca deben mostrar datos.

Si está haciendo contraseñas correctamente, ni siquiera podría mostrarla. Debería estar haciendo un cifrado unidireccional (llamado hash) de los datos y almacenar solo el valor hash en la base de datos. De esta forma, nunca puede ser descifrado. Cuando un usuario inicia sesión, simplemente hash la contraseña que ingresó y la compara con la almacenada.

4

Ok, este es un viejo pero como solo necesitaba hacer lo mismo para la configuración del correo electrónico. solución simple, añadir htmlAttributes así:

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

Esto establecerá el valor de la contraseña en la introducción de la contraseña.

El tipo pide una respuesta, no críticas. Esto no es una cuestión de "hacer contraseñas correctamente" o no, lo que intenta lograr requiere guardar una contraseña clara, por lo que puede enviarse a un servidor de correo electrónico u otro sistema donde fallaría el envío de un valor hash.

4

La contraseña pasado de esta manera:

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

se puede ver en el código fuente de la página desde cualquier navegador U_U

3

enfoque normal para el cambio de contraseña por el usuario es proporcionar 3 vacío campos de contraseña (input type = contraseña):

  1. Nueva contraseña
  2. caso confirmado m nueva contraseña
  3. Contraseña anterior

Después usuario envía los datos en el servidor, primero se comprueba si la contraseña anterior es correcta (ya que no quiere que otra persona cambie la contraseña si se olvida de cerrar la sesión de usuario), entonces compruebe si el usuario ingresó una nueva contraseña y la confirmó correctamente (dado que los caracteres están enmascarados en los campos de contraseña, y SOLO usted actualiza la base de datos).

Debe NUNCA presentar la contraseña del usuario en html.También se aplica para casos en los que falla la validación del lado del servidor (longitud o complejidad de la contraseña). Siempre representa campos de contraseña vacíos.

+0

Enlace útil: [Cómo comparar la contraseña y confirmar la contraseña] (http: // aspdotnet-kishore .blogspot.de/2013/10/how-can-i-compare-password-and-confirm.html). – dee

0

Otra opción aquí, si usa la sintaxis de Razor, es utilizar JQuery para rellenar el campo de contraseña. Algo así como el siguiente trabajo:

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

me enfrentaba mismo problema, y ​​problema fue resuelto por la solución por debajo, puede que le ayudará a

la clase del modelo

public class yourmodel 

{ 

    [DataType(DataType.Password)] 

    public string Password {get;set; } 

} 

Ver página

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