我刚刚安装ASP.Net MVC 4 RC取代ASP.Net MVC 4 beta。当尝试运行现有应用程序时,我收到一条错误消息,AntiForgeryToken已被弃用。这里是我的代码:
using (Html.BeginForm("","",FormMethod.Post,new { id = "MonthElectionForm" })) { @Html.AntiForgeryToken("AddEditMonthElection") }
—- UPDATE —
ASP.Net MVC 4 RC已经使Salt属性过时了ValidateAntiForgeryToken属性和AntiForgeryToken html助手。所以,现在我的代码看起来像这样:
控制器:
[HttpPost] [ValidateAntiForgeryToken] public JsonResult CreateCompany(CompanyDataEntryviewmodel modelData) {...}
形成:
@using (Html.BeginForm("",new { id = "CreateCompanyDataEntryForm" })) { @Html.AntiForgeryToken() ... }
查看生成的HTML,AntiForgeryToken仍会生成一个隐藏字段并提供一个加密值。我的行动仍然工作。但我失去了指定密钥在加密过程中使用的能力。我不太确定过程是如何工作的,但在我可以告诉我在设置盐的价值在行动和形式。值必须匹配,以便操作接受帖子。那么,你现在怎么设置salt值呢?我认为它与AntiForgeryConfig AdditionalDataProvider有关,但我找不到任何关于如何使用AntiForgeryConfig AdditionalDataProvider的任何东西。请帮忙。
谢谢
解决方法
设置salt参数是不必要的,没有提供任何额外的保护,所以我们取消了对它的支持。
有关详细信息,请参阅我的回复How to choose a salt value for ValidateAntiForgeryToken。