У меня есть действие контроллера (внутри области, если это имеет значение), которое имеет атрибуты [Authorize] и [Route], как показано ниже:
[Route("myarea/someaction")]
[Authorize]
public IActionResult SomeAction()
{
return View("SomeAction");
}
У меня есть приложение, настроенное для входа с помощью Azure AD, с использованием AddOpenIdConnect()
и т.п. (я могу предоставить более подробную информацию об этом, если это необходимо).
Когда я перехожу на http://localhost:12345/myarea/someaction,, он правильно перенаправляет на Azure AD, аутентифицирует пользователя и перенаправляет обратно на http://localhost:12345/myarea/someaction - однако в бесконечном цикле . Он постоянно проходит через цикл аутентификации. Если я попадаю в отладчик, Request.HttpContext.User.Identity.IsAuthenticated
возвращает false
.
Однако, если я удаляю пользовательский атрибут [Route("myarea/someaction")]
и использую http://localhost:12345/myarea/MyController/SomeAction,, он работает нормально - он аутентифицирует и перенаправляет без цикла. Request.HttpContext.User.Identity.Name
правильно возвращает адрес электронной почты аутентифицированного пользователя.
Есть идеи, почему это может происходить?
Приложение - ASP.NET Core, использующее .NET Framework 4.6.1, Visual Studio 2017, Windows 10 и IIS Express.