Как обработать кнопку отмены всплывающего окна аутентификации windows в asp. net core mvc, развернутом на Kestrel? - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь реализовать смешанную аутентификацию windows + cook ie на основе asp. net core mvc приложения. Когда аутентификация windows отменена, я хочу перенаправить пользователя на резервную страницу, где можно выбрать аутентификацию windows или приготовить ie. Приложение будет развернуто на Kestrel, а не IIS. Я использую. net ядро ​​3.1.

Обычно мне нужно перенаправить пользователя на резервную страницу, когда http-код состояния 401 и код подстатуса 1 или 2.

До сих пор я пытался использовать кодовые страницы статуса в качестве пары:

В Startup.cs я добавил

app.UseStatusCodePagesWithReExecute("/Error/Status", "?statusCode={0}");

В ErrorController.cs

public IActionResult Status(int statusCode)
        {
            var statusCodeReExecuteFeature = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();

            if (statusCode == 401)
            {
                return RedirectToAction("Index", "Fallback");
            }

            var originalURL =
                statusCodeReExecuteFeature.OriginalPathBase
                + statusCodeReExecuteFeature.OriginalPath
                + statusCodeReExecuteFeature.OriginalQueryString;

            return Redirect(originalURL);
        }

Это не работает, потому что это нарушает windows аутентификацию рукопожатия.

Я также попытался реализовать собственный обработчик ошибок и проверить HttpResponse.StatusCode == 401, но метод контроллера ошибок не срабатывает, вероятно, потому что windows аутентификация обрабатывается другим уровнем ..

...