如何在运行时设置防伪cookie域?

问题描述 投票:0回答:1

假设我有一个托管在admin.xyz.com的ASP.NET Core应用程序,我需要为*.xyz.com设置防伪cookie。我目前正在配置防伪服务,例如:

services.AddAntiforgery(opts =>
{
    opts.HeaderName = ANTIFORGERY_HEADER_NAME;
    opts.Cookie.Name = ANTIFORGERY_COOKIE_NAME;
});

我可以通过这种方式静态设置域opts.Cookie.Domain = "xyz.com",但我正在寻找一种在运行时进行操作的方式,例如:

Domain = string.Join('.', Request.Host.Host.Split('.').Skip(1));

或者在我可以访问HttpContext对象的地方。我想到了中间件,但我认为它太复杂了。

您知道执行此操作的简单方法吗?预先感谢。

c# asp.net-core-2.1
1个回答
0
投票

您可以替换CookieBuilder内的CookieBuilder并提供您自己的AntiforgeryOptions实现,以明确设置域值。

类似这样的东西:

AntiforgeryOptions

然后在配置防伪时,使用新的生成器:

Build
© www.soinside.com 2019 - 2024. All rights reserved.