Asp.net Перенаправление Авторизации Ядра Не Происходит

Я пытаюсь использовать аутентификацию cookie в Asp.net основное приложение (dnx 4.5). Обратите внимание, что, поскольку у меня есть пользовательский механизм аутентификации (radius), я не использую механизм "из коробки", предоставляемый основной аутентификацией. Когда пользователь не аутентифицируется, я хочу перенаправить на страницу входа в систему.

Я добавил в Startup.cs следующий код. Идея состоит в том, чтобы перенаправляться на контроллер входа в систему, когда пользователь не прошел проверку подлинности:

app.UseCookieAuthentication(options => { options.LoginPath = new Microsoft.AspNet.Http.PathString("/Login"); });

в моем Домашний контроллер у меня:

[Authorize]
public IActionResult Index()
{
    return View();
}

в моем контроллере входа в систему я возвращаю представление, соответствующее форме входа radius:

[AllowAnonymous]
public IActionResult Index()
{
    return View();
}

однако, когда я запускаю приложение, перенаправление никогда не происходит. Глядя на вывод консоли, я вижу следующее:

warn: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[0]
      Authorization failed for the request at filter 'Microsoft.AspNet.Mvc.Filters.AuthorizeFilter'.
info: Microsoft.AspNet.Mvc.ChallengeResult[1]
      Executing ChallengeResult with authentication schemes ().
info: Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler[2]
      Executed action ThingsProjectorWeb.Controllers.HomeController.Index in 0ms
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2]
      Request finished in 0.0016ms 401

любая помощь о том, как правильно настроить это, будет очень признательна. Спасибо!

1 ответов


Ок, понял. Все это объясняется здесь:https://docs.asp.net/en/latest/security/authentication/cookie.html

я пропустил options.AutomaticChallenge = true;, который автоматически перенаправляет вас на контроллер входа.

вот обновленные параметры:

app.UseCookieAuthentication(options => {
                options.LoginPath = new Microsoft.AspNet.Http.PathString("/Login");
                options.AutomaticChallenge = true;
            });

обновление:

версии 1.1.0 это:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
         LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login"),
         AutomaticChallenge = true
});