2015-05-05 12 views
5

Non uso la sessione, quindi l'ho rimosso insieme a tutti i moduli HTTP di cui non ho bisogno.AntiForgeryToken richiede lo stato della sessione?

volte ottengo questo errore: System.Web.Mvc.HttpAntiForgeryException: The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster.

o questa: System.Web.Mvc.HttpAntiForgeryException: The provided anti-forgery token was meant for a different claims-based user than the current user.

Quando abilito sessione, funziona.

Quindi la domanda è: la roba csrf dipende dallo stato della sessione?

+0

Sei sicuro che il tuo fornitore di hosting condiviso ospiti l'applicazione su un solo server web? – lowleveldesign

+0

@lowleveldesign Non ne sono sicuro. Ma abbastanza convinto, come il nome host è sempre lo stesso nei miei registri, come è l'IP. –

+0

e che dire del dominio su cui sono impostati i cookie csrf? Stai usando il tuo sottodominio unico? In caso contrario, l'applicazione potrebbe ricevere cookie da altre applicazioni .NET in esecuzione sullo stesso dominio principale. – lowleveldesign

risposta

6

La sessione ASP.NET non è richiesta per i token anti-contraffazione. Il token viene memorizzato in un campo modulo nascosto e in un cookie, separato da una sessione di cookie (è possibile trovare i dettagli here). Inoltre, quando il token anti-contraffazione non è valido, viene generata un'eccezione in modo che non assomigli al problema che si ha con i token anti-contraffazione. Magari registrare una sessione di Fiddler, collegarla a una nuova domanda di SO e dovremmo essere in grado di guidarti meglio.

+0

L'eccezione viene sempre generata quando si verifica il "doppio accesso" o si tratta di un problema separato? – lowleveldesign

+0

Sto accettando questa risposta, poiché risponde direttamente alla domanda originale. Ma il problema rimane, quindi aprirò una domanda a parte come consigliato. –

Problemi correlati