我有一个问题,我最近在我所有的表单中添加了防伪标记,并且在我的控制器中添加了ValidateAntiForgeryToken属性。
但我的用户通常会填写一个表单,然后返回浏览器按钮,对其中一个错误进行更正,然后他们就会得到无效的防伪令牌。
我可以理解为什么会发生这种情况(我们正在返回并使用一个不再有效的防伪令牌),但是有什么方法可以避免这种行为吗?比如强制重新加载这个页面?
发布于 2012-06-28 22:30:13
这很奇怪。防伪令牌不是一次性使用的令牌。它们通常可以在同一会话中愉快地重用。您的用户此时是否已登录?令牌基于登录,因此如果他们在这段时间内重新登录,则令牌可能不再有效。
发布于 2012-06-28 19:16:12
带有TempData方法的“后重定向post模式”应该可以解决您的问题。
基本思想是在操作中将一些值放在TempData中,并检查该值是否存在。如果用户已按下“后退”按钮或刷新了页面,则TempData值将不再存在-您可以检查此值并做出适当的反应(即,如果您愿意,可以重新提交操作)。
我可以更详细地介绍,但Darin Dimitrov的this post对此进行了适当的总结
https://stackoverflow.com/questions/11241796
复制相似问题