Я пытаюсь вычислить и кэшировать заявки для пользователей Windows, используя аутентификацию cookie в качестве схемы по умолчанию.Ниже приведен контроллер учетной записи, который я использую для этой цели.
[Route("account"), AllowAnonymous]
public class AccountController : Controller
{
[HttpGet, Route("login")]
public async Task<IActionResult> Login(string returnUrl)
{
var windowsAuthenticationScheme = Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme;
var result = await HttpContext.AuthenticateAsync(windowsAuthenticationScheme);
if (result?.Principal is WindowsPrincipal wp)
{
var id = new ClaimsIdentity(windowsAuthenticationScheme);
// add claims
await HttpContext.SignInAsync(new ClaimsPrincipal(id));
return Redirect(returnUrl);
}
return Challenge(windowsAuthenticationScheme);
}
[HttpPost, Route("logout")]
public async Task Logout()
{
await HttpContext.SignOutAsync();
// both should have similar effect as cookie authentication is the default scheme
// await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
}
}
Это работает довольно хорошо при входе в систему. Однако процесс выхода из системы, похоже, не работает достаточно хорошо.После того, как я сгенерировал HTTP POST из моего браузера для маршрута /account/logout
, cookie корректно очищается в браузере.
Однако при обновлении он аутентифицирует пользователя автоматически, не затрагивая конечную точку входа в систему.Удаление cookie явно с помощью HttpContext.Response.Cookies.Delete(".AspNetCore.Cookies");
также не помогает.Что я делаю неправильно?