Запретить автоматический вход в Windows после выхода из системы с помощью основной проверки подлинности файлов cookie asp.net - PullRequest
1 голос
/ 13 мая 2019

Я пытаюсь вычислить и кэшировать заявки для пользователей 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"); также не помогает.Что я делаю неправильно?

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