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

时间:2013-08-30 18:04:38

标签: c# html asp.net-mvc-4

我使用以下代码创建了一个简单的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.

这有什么问题?

1 个答案:

答案 0 :(得分:3)

当你的请求是GET请求时,防伪令牌在POST上是有意义的。

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

只显示值的那个将模型作为参数,而应该只创建一个空模型。

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