28

我刚刚安装了 ASP.Net MVC 4 RC 来替换 ASP.Net MVC 4 beta。尝试运行现有应用程序时,我收到一条AntiForgeryToken已弃用的错误消息。这是我的代码:

using (Html.BeginForm("", "", FormMethod.Post, new { id = "MonthElectionForm" }))
{
    @Html.AntiForgeryToken("AddEditMonthElection")
}

- - 更新 - -

ASP.Net MVC 4 RC 已经废弃了 ValidateAntiForgeryToken 属性和 AntiForgeryToken html 帮助器的 Salt 属性。所以,现在我的代码如下所示:

控制器:

        [HttpPost]
        [ValidateAntiForgeryToken]
        public JsonResult CreateCompany(CompanyDataEntryViewModel modelData)
       {...}

形式:

@using (Html.BeginForm("", "", FormMethod.Post, new { id = "CreateCompanyDataEntryForm" }))
{
    @Html.AntiForgeryToken()
...
}

查看生成的 HTML,AntiForgeryToken 仍会生成隐藏字段并提供加密值。我的行动仍然有效。但是我失去了指定要在加密过程中使用的密钥的能力。我不太确定这个过程是如何工作的,但在我知道我在动作和表单上设置盐值之前。这些值必须匹配才能使操作接受帖子。那么,你现在如何设置盐值呢?我认为它与 AntiForgeryConfig AdditionalDataProvider 有关,但我找不到任何关于如何使用 AntiForgeryConfig AdditionalDataProvider 的谷歌搜索。请帮忙。

谢谢

4

1 回答 1

43

设置salt参数是不必要的,也没有提供任何额外的保护,因此我们删除了对它的支持。

有关更多信息,请参阅我在如何为 ValidateAntiForgeryToken 选择盐值的回复。

于 2012-06-01T19:46:21.103 回答