我想将.ASPNetCoreSession
cookie的路径设置为当前托管应用程序的虚拟目录。这当然应该动态发生。目前,路径默认设置为/
。
services.AddSession(options =>
{
options.Cookie.HttpOnly = true;
options.Cookie.Path = "/MyVirtual/DirectoryPath";
options.Cookie.Name = SessionCookieName;
options.IdleTimeout = TimeSpan.FromMinutes(15);
options.Cookie.SameSite = SameSiteMode.Strict;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});
anti forgery token implementation已按照预期开箱即用,我想做类似的事情。
var pathBase = httpContext.Request.PathBase.ToString();
if (!string.IsNullOrEmpty(pathBase))
{
options.Path = pathBase;
}
不幸的是,这个实现受限于HttpContext
。
我正在考虑使用IPostConfigureOptions<T>
或IConfigureOptions<T>
来使用DI,但只要我需要访问当前的HttpContext
,这是一个范围我没有办法做到这一点。
我确信必须有其他方法来检索Startup.cs
类中的虚拟目录?
虽然我不是这个选项的忠实粉丝但是暂时我会添加我自己的SessionMiddleware(在UseSession()
的Configure
方法中注册为Startup.cs
的一部分),我将从HttpContext
检索虚拟目录并设置Cookie.Path
通过CookieBuilder
。