我为一个非常简单的提交表单创建了一个新的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:             }


我们该怎么做才能避免这种情况?

最佳答案

完全由您决定。根据需要处理错误。
在您的情况下,可能是您重新启动了Web服务器,并且您的viewstate死了或者这样做不是故意的。

您在使用Owin吗?如果您使用的是Owin,则存在一个会混淆Session和Viewstate的错误。在验证用户身份之前,请创建会话变量(任何内容),例如Session [“ Blah”] = test。

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

关于c# - 验证xsrf token 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19435694/

10-10 17:25