【问题标题】:What is .AspNetCore.Antiforgery.xxxxxxx cookie in .Net Core?.Net Core 中的 .AspNetCore.Antiforgery.xxxxxxx cookie 是什么?
【发布时间】:2018-02-22 19:27:15
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net asp.net-core .net-core antiforgerytoken


    【解决方案1】:

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

    ValidateAntiForgeryToken 是一个动作过滤器,可应用于单个动作、控制器或应用程序的全局。除非请求包含有效的防伪令牌,否则对应用了此过滤器的操作发出的请求将被阻止。

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

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

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

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

    services.AddAntiforgery(options => options.CookieName = "X-CSRF-TOKEN-COOKIENAME");
    

    对于.Net Core 2.0.0 or greater there will be changes

    参考: 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");
    

    如果谈论标题,名称可以指定:

    services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
    

    查看:

    【讨论】:

    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多