我的mvc应用程序中存在防伪错误
本文关键字:错误 存在 mvc 应用程序 我的 | 更新日期: 2023-09-27 18:29:44
我创建了一个简单的MVC4应用程序,代码如下:
控制器:
[AllowAnonymous]
[HttpGet]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model)
{
return View();
}
视图:
<div>
@using (Html.BeginForm("Login","Administrator",FormMethod.Get))
{
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
@Html.LabelFor(x=>x.username)
@Html.TextBoxFor(x=>x.username)
@Html.LabelFor(x=>x.password)
@Html.TextBoxFor(x=>x.password)
<input type="submit" value="Submit" />
}
</div>
运行应用程序并转到此地址后:http://xxx/Administrator/Login
我得到了这个错误:
The required anti-forgery cookie "__RequestVerificationToken" is not present.
这是怎么回事?
Antiforgery令牌在POST上是有意义的,而您的请求是GET请求。
您应该有一个只显示登录屏幕的Login
方法(HttpGet
)和另一个接受已发布值的方法(HttpPost
)。
只显示值的应该而不是将模型作为参数,相反,它应该只创建一个空模型。
两种方法都可以呈现相同的视图。