我的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.

这是怎么回事?

我的mvc应用程序中存在防伪错误

Antiforgery令牌在POST上是有意义的,而您的请求是GET请求。

您应该有一个只显示登录屏幕的Login方法(HttpGet)和另一个接受已发布值的方法(HttpPost)。

只显示值的应该而不是将模型作为参数,相反,它应该只创建一个空模型。

两种方法都可以呈现相同的视图。