Невозможно истечь cookie .NetCore - PullRequest
1 голос
/ 22 марта 2019

Я использую аутентификацию .NetCore и Cookie.Управление учетными записями (вход в систему, выход из системы и т. Д.) Осуществляется через API, а не через интерфейс Identity.Насколько я понимаю, сервер на самом деле не может ничего отправить клиенту, чтобы фактически удалить куки, скорее, мне нужно было бы «истечь» куки на сервере и вернуть его клиенту.

Так что здесьмои настройки

Startup.cs

services.AddAuthentication("mycookie")
  .AddCookie("mycookie", options => {
     options.Cookie.HttpOnly = true;
     options.SlidingExpiration = true;
     options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
     options.Cookie.Expiration = TimeSpan.FromMinutes(30);
  });

В моем ApiController у меня есть следующее:

AccountController.cs

[HttpGet("signout")]
public async Task<IActionResult> SignOut()
{
    var temp = new AuthenticationProperties()
    {
       ExpiresUtc = DateTime.Now.AddDays(-1)
    }
    await HttpContext.SignOutAsync("mycookie",temp);
    return Ok();
 }

Тем не менее, мой cookie никогда не заканчивается, когда я звоню signout.Я заметил в консоли разработчика браузера, cookie говорит Expires on: Session.Я бы ожидал увидеть там дату / время.

Как мне избавиться от куки или закончить его при вызове?

1 Ответ

2 голосов
/ 22 марта 2019

используйте заголовок ответа Clear-Site-Data . Помимо прочего, он позволяет очищать куки в браузере клиента.

В моем примере ниже я очищаю кэш пользователя и куки для моего домена.

   public IActionResult Logout()
    {
        this.HttpContext.Response.Headers.Add("Clear-Site-Data", new StringValues(new string[] { "\"cache\"", "\"cookies\"" }));
        return Ok();
    }

Сначала обязательно проверьте поддержку браузером этого заголовка .

Если ваш браузер не поддерживает Clear-Site-Data, то вы должны иметь возможность истечь их, например, так:

this.Response.Cookies.Append("cookieName", "deleted", new CookieOptions()
{
   Expires = DateTimeOffset.MinValue
});

Когда этот ответ о выходе из системы возвращается в браузер, я вижу, как исчезают файлы cookie (с помощью Chrome 73.0.3683.86, Инструменты разработчика / Хранилище / Файлы cookie / {myDomain} )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...