在SPA应用程序中正确使用ASP.NET 5中的AntiForgery令牌?

Mem*_*fis 9 c# antiforgerytoken single-page-application asp.net-core

在SPA应用程序的早期版本的ASP.NET中,AntiForgey令牌的想法如下:

  • @Html.AntiForgeryToken();在页面上添加
  • 添加__RequestVerificationToken到请求
  • ovverride AuthorizeAttribute as ValidateJsonAntiForgeryTokenAttribute.

我不太了解ASP.NET 5中的授权要求(是否有一些好的信息源?)但看起来新行为应该是这样的:

  • asp-anti-forgerytaghelper
  • 添加__RequestVerificationToken到请求
  • 这应该是新的要求.

问题是:如何编写这个新的授权要求并删除标准要求?有人可以提供一些建议或指点我的一些例子吗?谢谢

Max*_*ler 1

对于 MVC6,如果你使用这样的东西:

<form asp-controller="Account" 
      asp-action="Login">
</form>
Run Code Online (Sandbox Code Playgroud)

您将自动获得:

<form action="/Account/Login" method="post">
    <input name="__RequestVerificationToken" type="hidden" value="....">
</form>
Run Code Online (Sandbox Code Playgroud)

asp-antiforgery仅当您想停用该行为时才会使用。

至于验证本身,它是在您app.AddMvc(...)ConfigureServicesandConfigure方法中执行时添加的。

事实上,正在添加很多东西,如果您好奇,可以查看代码

从 Action 生成此令牌,那么您可以拥有一个依赖于IHtmlGenerator这种方式并生成令牌的控制器。