AntiForgeryToken是否需要会话状态?

时间:2015-05-05 06:49:36

标签: asp.net .net asp.net-mvc csrf

我没有使用会话,因此我将其与所有不需要的HTTP模块一起删除。

我有时会收到此错误: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.

或者这个:System.Web.Mvc.HttpAntiForgeryException: The provided anti-forgery token was meant for a different claims-based user than the current user.

当我启用会话时,它可以正常工作。

所以问题是:csrf的东西是否依赖于会话状态?

1 个答案:

答案 0 :(得分:6)

防伪标记不需要ASP.NET会话。令牌存储在隐藏的表单字段和cookie中,与cookie会话分开(您可以找到详细信息here)。此外,当防伪令牌无效时,会抛出异常,因此看起来您遇到的问题与防伪令牌无关。也许记录一个Fiddler会话,将其附加到一个新的SO问题,我们应该能够更好地指导你。