Настройте путь cookie с помощью виртуального каталога в AddSession()

Я хотел бы установить путь .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;
    });

Реализация токена защиты от подделки уже делает это из коробки, как и предполагалось, и я хотел бы сделать что-то подобное.

  var pathBase = httpContext.Request.PathBase.ToString();

  if (!string.IsNullOrEmpty(pathBase))
  {
      options.Path = pathBase;
  }

К сожалению, эта реализация ограничена HttpContext,

Я думал об использовании IPostConfigureOptions<T> или же IConfigureOptions<T> использовать DI, но до тех пор, пока мне нужен доступ к текущему HttpContext который ограничен, я не вижу способа сделать это.

Я уверен, что должны быть другие способы получить виртуальный каталог в Startup.cs учебный класс?

0 ответов

Хотя я не большой поклонник этой опции, но пока я просто добавлю свое собственное SessionMiddleware (которое зарегистрировано как часть UseSession() в Configure метод в Startup.cs) где я получу виртуальный каталог из HttpContext и установить Cookie.Path через CookieBuilder,

Другие вопросы по тегам