anti-xsrf令牌的验证失败

时间:2013-10-17 19:38:10

标签: c# asp.net visual-studio-2012 .net-4.5

我为一个非常简单的提交表单创建了一个新的asp.net Web表单(带有母版页)应用程序。我使用visual studio 2012来创建web项目,并添加了用于防止site.master.cs上的跨站点脚本伪造的代码。

但是在测试时,如果用户签名并且处于非活动状态几分钟,然后单击“注销”按钮,则会收到此错误(在site.master.cs上)

Validation of Anti-XSRF token failed.

       Exception Details: System.InvalidOperationException: Validation of Anti-XSRF token failed.

Source Error: 
Line 61:                     || (string)ViewState[AntiXsrfUserNameKey] !=    

  (Context.User.Identity.Name ?? String.Empty))

 Line 62:                 {

 Line 63:                     throw new InvalidOperationException("Validation of Anti-XSRF token failed.");


   Line 64:                 }

 Line 65:             }

我们可以做些什么来避免这种情况?

1 个答案:

答案 0 :(得分:1)

这完全取决于你。随意处理错误.. 在您的情况下,您可能重新启动了Web服务器,并且您的视图状态已经死亡或者没有明知故障。

你正在使用Owin吗?如果您使用的是Owin,则会出现一个混淆Session和Viewstate的错误。在验证用户之前,创建一个Session变量(任何东西),例如Session [“Blah”] = test。

只需添加代码即可处理错误(将用户重定向到另一个页面)。