Acabo de hacer una prueba rápida con una simple muestra de ASP.NET MVC 3 modificando el formulario de inicio de sesión predeterminado. De acuerdo con this article, tanto el campo oculto __RequestVerificationToken
como las cookies __RequestVerificationToken_Lw__
deben contener el mismo valor que el generado por Html.AntiForgeryToken()
. Pero no es exactamente lo mismo cuando los obtuve en Fiddle, por cierto, mirando el código fuente de MVC 3, el método GetAntiForgeryTokenAndSetCookie
no pareció usar el valor de sal para generar las cookies. ¿Hubo algún cambio en MVC 3?¿Por qué el campo oculto de AntiForgeryToken no es igual que sus cookies en mi máquina?
Olvidé decir que aún puedo iniciar sesión correctamente con la solicitud POST normal o Ajax.
Aquí es iniciar sesión en bruto de violín:
POST http://localhost:51713/Account/LogOn HTTP/1.1
Referer: http://localhost:51713/Account/LogOn
Content-Length: 256
Origin: http://localhost:51713
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded
Cookie: __RequestVerificationToken_Lw__=OIRtVqUvNt/LfDGeoVy3W1VhdKN7MwdbUZmRNScz4NqS4uV0I0vQH2MHg77SsVhcinK5SJi9mVcdBUWk2VMiPTk8EMUN2Zq0X4ucK8XQ3/zr6NoiIvVF73Bq8ahbFaY/IrNrWY7mmzvO9j/XVLNN2lNqgCd6I3UGZAw3/nlOmpA=
__RequestVerificationToken=zeDS%2F8MZE%2BLf%2FrRhevwN51J7bOE3GxlGNLQc8HogwFctF7glU1JboHePTTHa5YFe9%2FD2sY7w167q53gqvcwYZG1iZeecdnO4fdg6URdR4RUR%2BjIgk1apkXoxQ2xg48REfv4N5D4SHKU4MAf30Diy0MVyyF9N2Dl7uUGT6LbKHZU%3D&UserName=Tien&Password=tien&RememberMe=false
Como nota al margen: los tokens AntiForgery están diseñados para ser utilizados en partes no públicas de su aplicación (donde el usuario ya está autenticado). Usarlos en un formulario de inicio de sesión público es bastante inútil. –
El formulario de inicio de sesión se acaba de utilizar con fines de prueba. –