validate site requerida net mvc forgery foreign cross cookie asp antifalsificación anti asp.net-mvc asp.net-mvc-4

asp.net-mvc - site - mvc controller antiforgerytoken



El token anti falsificación no se pudo descifrar (6)

Acabo de recibir este error también y, en mi caso, fue causado por el token anti-falsificación que se aplica dos veces en la misma forma. La segunda instancia provenía de una vista parcial, por lo que no fue inmediatamente obvio.

Tengo un formulario:

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { @Html.AntiForgeryToken() @Html.ValidationSummary()...

y acción:

[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl, string City) { }

ocasionalmente (una vez por semana), obtengo el error:

El token anti falsificación no se pudo descifrar. Si esta aplicación está alojada en una Web Farm o clúster, asegúrese de que todas las máquinas ejecuten la misma versión de páginas web ASP.NET y que la configuración especifique claves de cifrado y validación explícitas. AutoGenerate no se puede usar en un clúster.

Intento agregar a webconfig:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" />

pero el error todavía aparece ocasionalmente

Me di cuenta de que este error ocurre, por ejemplo, cuando una persona venía de una computadora y luego probaba otra computadora

O a veces un valor automático establecido con un tipo de datos incorrecto, como bool a entero en el campo de formulario por cualquier código jQuery, por favor también verifíquelo.


Me encontré con este problema en un área de código donde tenía una vista llamando a una vista parcial, sin embargo, en lugar de devolver una vista parcial, devolví una vista.

Cambié:

return Ver (índice);

a

return PartialView (índice);

bajo mi control y eso solucionó mi problema.


Recibo este error cuando la página es vieja (''obsoleta''). Una actualización del token a través de una recarga de página resuelve mi problema. Parece que hay un período de tiempo de espera.


Si llega aquí desde Google para su propia máquina de desarrollador que muestra este error, intente borrar las cookies en el navegador. Borrar las cookies del navegador funcionó para mí.


Simplemente genere la etiqueta <machineKey .../> desde un enlace para su versión de framework e insértela en <system.web><system.web/> en Web.config si no existe.

Espero que esto ayude.


validationKey = "AutoGenerate"

Esto le dice a ASP.NET que genere una nueva clave de cifrado para utilizarla en el cifrado de elementos como tickets de autenticación y tokens antiforgery cada vez que se inicia la aplicación. Si recibió una solicitud que utilizaba una clave diferente (por ejemplo, antes del reinicio) para cifrar elementos de la solicitud (por ejemplo, cookies de autenticación), esta excepción puede ocurrir.

Si se aleja de "AutoGenerate" y especifica (la clave de cifrado) específicamente, las solicitudes que dependen de esa clave se descifrarán correctamente y la validación funcionará desde el reinicio de la aplicación para reiniciar. Por ejemplo:

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES" />

Puede leer al contenido de su corazón en la página MSDN: Cómo: Configurar MachineKey en ASP.NET