Настройте Путь Cookie с Виртуальным каталогом в AddSession () - PullRequest
0 голосов
/ 25 января 2019

Я бы хотел указать путь к файлу .ASPNetCoreSession для виртуального каталога, в котором в данный момент размещено приложение. Это, конечно, должно происходить динамически. В настоящее время путь установлен по умолчанию /.

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?

1 Ответ

0 голосов
/ 29 марта 2019

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

...