28

Ho appena installato ASP.Net MVC 4 RC per sostituire ASP.Net MVC 4 beta. Quando provo a eseguire un'applicazione esistente, ricevo un messaggio di errore che è stato dichiarato deprecato da AntiForgeryToken. Qui è il mio codice:AntiForgeryToken deprecato in ASP.Net MVC 4 RC

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

---- UPDATE ---

ASP.Net MVC 4 RC ha reso la proprietà del sale obsoleto per l'attributo ValidateAntiForgeryToken e AntiForgeryToken html aiutante. Così, ora il mio codice è simile al seguente:

regolatore:

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

forma:

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

Guardando HTML generato, AntiForgeryToken genera ancora un campo nascosto e fornisce un valore crittografato. La mia azione funziona ancora. Ma ho perso la capacità di designare una chiave da utilizzare nel processo di crittografia. Non sono troppo sicuro di come funziona il processo, ma prima posso dire che stavo impostando il valore del sale sull'azione e sul modulo. I valori dovevano corrispondere affinché l'azione accettasse il post. Quindi, come si imposta il valore del sale ora? Penso che abbia qualcosa a che fare con AntiForgeryConfig AdditionalDataProvider ma non riesco a trovare nulla su Google come utilizzare AntiForgeryConfig AdditionalDataProvider. Per favore aiuto.

Grazie

+6

Ricevi questo messaggio di errore dettagliato? "Questo metodo è obsoleto, utilizzare invece il metodo AntiForgeryToken(). Per specificare i dati personalizzati da incorporare nel token, utilizzare la proprietà statica AntiForgeryConfig.AdditionalDataProvider."? –

+0

Sì, ho visto il messaggio di errore dettagliato. Come si usa la proprietà AntiForgeryConfig.AdditionalDataProvider? Non possiamo più usare attributi su un'azione come prima? Non viene mostrato molto quando googleing proprietà AntiForgeryConfig.AdditionalDataProvider. –

risposta

43

Impostazione del sale parametro è inutile e non ha fornito alcuna protezione aggiuntiva, quindi abbiamo rimosso il supporto per esso.

Si prega di vedere la mia risposta a How to choose a salt value for ValidateAntiForgeryToken per ulteriori informazioni.

+1

Ahhh, ha senso ora. Ho assunto che il valore che stavamo usando per il valore Salt è stato utilizzato nel processo di crittografia. Grazie per il chiarimento. –

+1

Quindi, cosa fai nel caso in cui hai più moduli di accesso (metodi diversi) sulla stessa pagina, e ognuno ha bisogno di un token? Sto incontrando il problema in cui sto ricevendo errori con il token perché viene avviato un modulo, ma l'altro viene selezionato e inoltrato. (Come login utente interno vs login utente esterno.) – Craig