Ho appena eseguito un test rapido con un semplice esempio di ASP.NET MVC 3 modificando il modulo LogOn predefinito. Secondo this article, entrambi i campi nascosti __RequestVerificationToken
e i cookie __RequestVerificationToken_Lw__
devono contenere lo stesso valore generato da Html.AntiForgeryToken()
. Ma non è esattamente lo stesso quando li ho presi in Fiddle, a proposito, guardando il codice sorgente di MVC 3, il metodo GetAntiForgeryTokenAndSetCookie
sembrava non utilizzare il valore di sale per generare i cookie. C'è stato qualche cambiamento in MVC 3?Perché il campo nascosto di AntiForgeryToken non è uguale ai cookie sulla mia macchina?
Ho dimenticato di poter accedere correttamente alla richiesta POST sia normale che Ajax.
Ecco di log in da Fiddle:
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
Come sidenote: i token AntiForgery sono progettati per essere utilizzati per parti non pubbliche dell'applicazione (dove l'utente è già autenticato). Usarli su un modulo di accesso pubblico è praticamente inutile. –
Il modulo LogOn è stato appena utilizzato a scopo di test. –