- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Mono 上运行的 MVC4 应用程序中出现错误:
The anti-forgery cookie token and form field token do not match
在“登录和注册”页面上。此页面有一个 LoginOrRegisterViewModel
,如下所示:
public class LoginOrRegisterViewModel
{
public LoginModel Login { get; set; }
public RegisterModel Register { get; set; }
}
通过 GET 请求传递给页面。
页面上有两个 Html.BeginForms()
,一个是 Login
表单,一个是 Register
表单。第一个调用 Controller 上的 Login
操作,第二个调用 Register
操作。这两个操作都有一个 ValidateAntiForgeryToken
属性。提交表单时,分别从 LoginOrRegisterViewModel
获取 Login
或 Register
。
当页面加载并且注册用户在一段时间(几个小时?)后尝试登录时,“登录和注册”页面最初显示,但是当提交 Login
表单时出现上述错误显示直到根页面被刷新。
我在 Web.config 中包含了一个机器 key ,并在两种形式中都添加了 Html.AntiForgeryToken()
。我怀疑这个错误可能与两种形式和 View 模型有关。
有谁知道如何修复错误?谢谢。
最佳答案
MVC 最佳编码标准,始终实践代码关注点分离。
如果你将 @Html.AntiForgeryToken() 放在你的 html 表单上,那么你需要通过编写属性 [ValidateAntiForgeryToken()] 来验证 Controller 端方法的防伪造 .
Html 助手将在您的表单中生成唯一的 token ,例如,
<input name="__RequestVerificationToken" type="hidden" value="4dvPVQIvpXNEKZyV1DCjeN1rmtMDJ9fQ2">
对于每个表单,将生成唯一的防伪 token ,它将解决您的冲突。
如果您仍然遇到困难,请告诉我。
关于c# - 带有 ViewModel 和两个表单的页面上的 "The anti-forgery cookie token and form field token do not match",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591925/
我是一名优秀的程序员,十分优秀!