【问题标题】:AntiForgeryToken deprecated in ASP.Net MVC 4 RCASP.Net MVC 4 RC 中不推荐使用 AntiForgeryToken
【发布时间】:2012-06-06 18:05:51
【问题描述】:

我刚刚安装了 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 的谷歌搜索。请帮忙。

谢谢

【问题讨论】:

  • 您是否收到此详细的错误消息? “此方法已弃用。请改用 AntiForgeryToken() 方法。要指定要嵌入到令牌中的自定义数据,请使用静态 AntiForgeryConfig.AdditionalDataProvider 属性。”?
  • 是的,我看到了详细的错误消息。你如何使用 AntiForgeryConfig.AdditionalDataProvider 属性?我们可以不再像以前那样在动作上使用属性吗?谷歌搜索 AntiForgeryConfig.AdditionalDataProvider 属性时显示不多。

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 antiforgerytoken


【解决方案1】:

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

请在How to choose a salt value for ValidateAntiForgeryToken查看我的回复了解更多信息。

【讨论】:

  • 啊,现在说得通了。我假设我们用于 Salt 值的值已用于加密过程。感谢您解决这个问题。
  • 那么,如果你在同一个页面上有多个登录表单(不同的方法),并且每个都需要一个令牌,你会怎么做?我遇到了令牌错误的问题,因为启动了一个表单,但随后选择并提交了另一个表单。 (例如内部用户登录与外部用户登录。)
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2011-09-16
  • 2010-11-23
  • 2013-06-12
  • 2015-12-13
相关资源
最近更新 更多