什么是.Net Core中的.AspNetCore.Antiforgery.xxxxxxx cookie?

Sha*_*mun 14 .net c# antiforgerytoken .net-core asp.net-core

我试图在.Net Core中使用ValidateAntiForgeryToken,但我得到了.AspNetCore.Antiforgery.xxxxxxx cookie丢失了.

这是什么.AspNetCore.Antiforgery.xxxxxxx cookie?

Set*_*Set 17

ASP.NET Core查找此cookie以查找X-CSRF令牌.

ValidateAntiForgeryToken是一个动作过滤器,除非请求包含有效的防伪令牌,否则将对阻止应用此过滤器的操作的请求进行阻止.

通常,ASP.NET Core可能会在cookie或标头中查找令牌.所以你可能会遇到这种情况

  • 而不是cookie,标头用于传递令牌
  • 带令牌的cookie具有与ASP.NET Core预期不同的名称.

默认情况下,ASP.NET Core将生成并期望以DefaultCookiePrefix(".AspNetCore.Antiforgery.")开头的唯一cookie名称.

这可以使用防伪选项覆盖CookieName:

services.AddAntiforgery(options => options.CookieName = "X-CSRF-TOKEN-COOKIENAME");
Run Code Online (Sandbox Code Playgroud)

对于.Net Core 2.0.0或更高版本,将会有更改:

参考:https: //docs.microsoft.com/en-us/dotnet/api/Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions?view=aspnetcore-2.0

对于以下用途:

services.AddAntiforgery(options => options.Cookie.Name = "X-CSRF-TOKEN-COOKIENAME");
Run Code Online (Sandbox Code Playgroud)

如果谈论标题,可以通过以下方式指定名称:

services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
Run Code Online (Sandbox Code Playgroud)

调查: