2

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

那有什么问题?

4

1 回答 1

3

当您的请求是 GET 请求时,防伪令牌对 POST 有意义。

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

仅显示值的不应模型作为参数,而应仅创建一个空模型。

两种方法都可以渲染相同的视图。

于 2013-08-30T18:15:09.680 回答