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