【问题标题】:How can I create meta tag with the AntiForgeryToken in ASP.NET MVC application?如何在 ASP.NET MVC 应用程序中使用 AntiForgeryToken 创建元标记?
【发布时间】:2016-08-18 15:51:29
【问题描述】:

我正在尝试使用 ASP.NET NVC 编写应用程序。

我喜欢在包含AntiForgeryToken 的页面头部添加Meta 标签。我希望能够通过jQuery 阅读它,而不必将@Html.AntiForgeryToken() 添加到手动提交的表单中。

我知道@Html.AntiForgeryToken()会生成一个隐藏的输入字段,但是我需要添加一个元标记来代替。

如何在不更改 @Html.AntiForgeryToken() 的情况下做到这一点?

【问题讨论】:

  • 第一个问题是……你为什么要这样做
  • 方便访问。方便
  • 如果您需要从 cookie 中读取旧令牌,请将其传递给生成器。然后获取两个新令牌,一个插入到元标记中,另一个您需要将其写入返回 cookie 标头。然后您需要通过调用方法手动检查它。你还想做吗?如果您仍然愿意,我可以提供答案
  • 没有更简单的方法吗?

标签: c# asp.net-mvc asp.net-mvc-5


【解决方案1】:

如果您仍希望在元标记中包含 CSRF 令牌,请尝试执行以下操作:

在您的_Layout.cshtml 文件中:

@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Csrf
@functions
{
  public string GetCsrfToken()
  {
    return Csrf.GetAndStoreTokens(Context).RequestToken;
  }
}

然后在您的head 标签内,像这样放置以下meta 标签:

<meta charset="UTF-8" content="@GetCsrfToken()" csrf-param="_csrf_token" method-param="_method" name="csrf-token">

【讨论】:

  • 更正:函数指令缺少尾随字母 s
猜你喜欢
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多