2012-06-01 31 views
28

Acabo de instalar ASP.Net MVC 4 RC para reemplazar ASP.Net MVC 4 beta. Cuando trato de ejecutar una aplicación existente recibo un mensaje de error que dice que AntiForgeryToken ha quedado obsoleto. Aquí está mi código:AntiForgeryToken obsoleto en ASP.Net MVC 4 RC

using (Html.BeginForm("", "", FormMethod.Post, new { id = "MonthElectionForm" })) 
{ 
    @Html.AntiForgeryToken("AddEditMonthElection") 
} 

---- ACTUALIZACIÓN ---

ASP.Net MVC 4 RC ha hecho la propiedad del atributo obsoleto Sal ValidateAntiForgeryToken y AntiForgeryToken ayuda HTML. Así pues, ahora mi código es el siguiente:

controlador:

 [HttpPost] 
     [ValidateAntiForgeryToken] 
     public JsonResult CreateCompany(CompanyDataEntryViewModel modelData) 
     {...} 

formulario:

@using (Html.BeginForm("", "", FormMethod.Post, new { id = "CreateCompanyDataEntryForm" })) 
{ 
    @Html.AntiForgeryToken() 
... 
} 

En cuanto a HTML generado, AntiForgeryToken todavía genera un campo oculto y proporciona un valor cifrado. Mi acción aún funciona también. Pero he perdido la capacidad de designar una clave para usar en el proceso de encriptación. No estoy muy seguro de cómo funciona el proceso, pero antes puedo decir que estaba estableciendo el valor de sal en la acción y en el formulario. Los valores tenían que coincidir para que la acción aceptara la publicación. Entonces, ¿cómo se establece el valor de sal ahora? Creo que tiene algo que ver con AntiForgeryConfig AdditionalDataProvider, pero no puedo encontrar nada en Google sobre cómo usar AntiForgeryConfig AdditionalDataProvider. Por favor ayuda.

Gracias

+6

¿Aparece este mensaje de error detallado? "Este método está en desuso. En su lugar, use el método AntiForgeryToken(). Para especificar los datos personalizados que se incorporarán en el token, use la propiedad AntiForgeryConfig.AdditionalDataProvider estática." –

+0

Sí, vi ese mensaje de error de detalle. ¿Cómo se usa la propiedad AntiForgeryConfig.AdditionalDataProvider? ¿Ya no podemos usar atributos en una acción como antes? No se muestra mucho cuando se busca en google la propiedad AntiForgeryConfig.AdditionalDataProvider. –

Respuesta

43

Ajuste de la sal parámetro es innecesaria y no proporcionan ninguna protección adicional, por lo que retira apoyo a la misma.

Consulte mi respuesta en How to choose a salt value for ValidateAntiForgeryToken para obtener más información.

+1

Ahhh, tiene sentido ahora. Supuse que el valor que utilizábamos para el valor de Sal se utilizó en el proceso de cifrado. Gracias por aclarar esto. –

+1

Entonces, ¿qué hace en caso de que tenga varios formularios de inicio de sesión (métodos diferentes) en la misma página, y cada uno necesita un token? Me estoy encontrando con el problema en el que recibo errores con el token porque se inicia un formulario, pero luego se selecciona y envía el otro. (Como inicio de sesión de usuario interno vs. acceso de usuario externo). – Craig

Cuestiones relacionadas