【问题标题】:mvc 6 generates antiforgerytoken only oncemvc 6 只生成一次 antiforgerytoken
【发布时间】:2016-05-29 15:05:04
【问题描述】:

我正在使用 Visual Studio 2015 和 aspnetcore rc2。我在每种形式中都使用@html.antiforgerytoken() 发布。但是 mvc 6 创建第一个并删除(或忽略,也许)其他的。我用masterview尝试了这个,没有master,没有结果。我在想我在某个地方有错误,但在哪里?我已经清除了浏览器历史记录并创建了一个带有一个视图和一个控制器的简单的空 asp.net 项目,再次尝试并没有结果。

这里是截图。

输出 我不使用@addtaghelper 或任何其他类似的扩展,我只使用@html.antiforgerytoken

【问题讨论】:

  • 我现在使用这种风格,这是一个特殊的解决方案而不是答案:@{ if(viewdata["token"]==null){html.antiforgerytoken();} } 和 @viewdata ["token"] 在表单中。

标签: c# asp.net asp.net-core-mvc asp.net-core-1.0


【解决方案1】:

Github repo aspnet/MVC 有很多关于多个AntiForgeryToken 调用的问题:#319#4595#4924。似乎当前行为是先前错误的“影响”。已打开#5005

目前(从 1.0.0 RTM 开始)我们有解决方法:将生成的令牌保存到变量并多次写入此变量:

@{
    var token = Html.AntiForgeryToken();
}
<form id="form-one">
    @token
</form>
<form id="form-two">
    @token
</form>

更新:问题#5005确认为错误,计划在1.1.0 milestone

【讨论】:

    【解决方案2】:

    正如我在#5005 中提到的,这种情况仅在HTML 和标签助手 用于生成&lt;form&gt; 元素时才会发生。

    除了切换到 HTML 生成,即使用更具侵入性的帮助程序之外,最简单的解决方法是在您的 _ViewImports.cshtml 中添加以下内容:

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    @addTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers
    

    【讨论】:

    • 感谢您的回复。正如我在问题中提到的,我不(不想)使用@addtaghelper 或任何其他类似的扩展
    • 这很好@ergen,这是一个临时的解决方法。我们计划在下一个版本中修复 #5005
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多