在AddSession()中使用虚拟目录配置Cookie路径

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

我想将.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类中的虚拟目录?

c# asp.net-mvc cookies .net-core kestrel
1个回答
0
投票

虽然我不是这个选项的忠实粉丝但是暂时我会添加我自己的SessionMiddleware(在UseSession()Configure方法中注册为Startup.cs的一部分),我将从HttpContext检索虚拟目录并设置Cookie.Path通过CookieBuilder

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