我有一个问题,我最近在我的所有表单中都放入了防伪令牌,并在我的控制器中放入了ValidateAntiForgeryToken
属性。
但是我的用户经常填写表格,然后用浏览器按钮返回,纠正他们的一个错误,他们得到无效的防伪令牌。
我可以理解为什么会发生这种情况(我们将返回并使用不再有效的防伪令牌),但是有什么方法可以避免这种行为吗?喜欢强制重新加载此页面?
我有一个问题,我最近在我的所有表单中都放入了防伪令牌,并在我的控制器中放入了ValidateAntiForgeryToken
属性。
但是我的用户经常填写表格,然后用浏览器按钮返回,纠正他们的一个错误,他们得到无效的防伪令牌。
我可以理解为什么会发生这种情况(我们将返回并使用不再有效的防伪令牌),但是有什么方法可以避免这种行为吗?喜欢强制重新加载此页面?
这很奇怪。防伪令牌不是一次性使用令牌。它们通常可以在同一个会话中愉快地重用。您的用户当时是否已登录?令牌基于登录,因此如果他们在此期间重新登录,则令牌可能不再有效。
使用 TempData 方法的“redirect-after-post 模式”应该可以解决您的问题。
基本思想是你会TempData
在你的 Action 中添加一些值并检查该值是否存在。如果用户按下了“后退按钮”或刷新了页面,则该TempData
值将不再存在 - 您可以检查该值并做出适当的反应(即,如果您愿意,请重新提交该操作)。
我可以更详细地介绍,但Darin Dimitrov 的这篇文章总结得恰到好处