Tengo mi control de cambio de contraseña. El usuario cambia la contraseña y hace clic en enviar. Tengo mi modelo de vista de persona p. No lo paso en absoluto a mi página de éxito.

return View("succsessFulLogin");

Y todavía estoy consiguiendo

http://localhost:50010/Password/ChangePassword?AccountName=username&CurrentPassword=currentPassValue&NewPassword=newPassValue&NewPasswordCheck=newCheckPassValue

En la barra de direcciones

Este es mi código en la página:

@using (Html.BeginForm("ChangePassword", "Password", FormMethod.Get))
{
    @Html.HiddenFor(model => model.AccountName)
    <br />
    <div>
        <h4>@Html.LabelFor(m => m.CurrentPassword)</h4> @Html.PasswordFor(m => m.CurrentPassword, new { onkeydown = "capLock(event);" } ) @Html.ValidationMessageFor(m => m.CurrentPassword)
    </div>
    <br />
    <div>
        <h4>@Html.LabelFor(m => m.NewPassword)</h4> @Html.PasswordFor(m => m.NewPassword, new { onkeydown = "capLock(event);" }) @Html.ValidationMessageFor(m => m.NewPassword)
    </div>
    <br />
    <div>
        <h4>@Html.LabelFor(m => m.NewPasswordCheck)</h4> @Html.PasswordFor(m => m.NewPasswordCheck, new { onkeydown = "capLock(event);" }) @Html.ValidationMessageFor(m => m.NewPasswordCheck)
    </div>
    <br />
    <p>
        <button class="btn-lg" type="submit">@Global.SAVE</button>
    </p>
}
0
dangalg 12 nov. 2017 a las 11:29

2 respuestas

La mejor respuesta

Cuando estás usando HTTP GET el navegador envía datos en URl y de esta manera tienes una limitación de hasta 2048 characters.

saber más sobre HTTPGET y HTTPPOST

Para mantener sus datos seguros y protegidos cambie su método Para PUBLICAR así:

    @using (Html.BeginForm("ChangePassword", "Password" FormMethod.Post, null))
{}

Luego agregue [HTTpPost] a su Action Method en su controller, como:

    [HttpPost]
    public ActionResult ChangePassword(yourmodel model){}
0
osman Rahimi 12 nov. 2017 a las 10:24

No estoy de acuerdo con Osman Rahimi.

Usar HTTP POST es de ninguna manera más seguro que HTTP GET. Siempre que esté pasando todo como texto sin cifrar a través de http, puede leer cualquier cosa que se pase hacia y desde el servidor, incluso si no se muestra en la barra de direcciones. Si quieres comprobarme tú mismo, todo lo que tienes que hacer es descargar fiddler, comprobar la solicitud y las respuestas. su página genera y compruébelo usted mismo.

La forma correcta de transmitir contraseñas en la red es asegurarse de que está utilizando SSL y hash de las contraseñas. De ninguna manera soy un experto en el tema, pero creo que encontrará una necesidad en estas respuestas:

  1. Transferir de forma segura la contraseña introducida por el usuario
  2. ¿Cómo se debe transferir la contraseña para iniciar sesión en Asp.net Identity?
  3. ¿Cómo guardar y enviar de forma segura el nombre de usuario / contraseña de inicio de sesión?
1
CKII 12 nov. 2017 a las 09:06