将[Authorize]与[Route(“ xyz”)]一起使用时出现无限循环

时间:2019-06-14 20:07:42

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc openid-connect

我有一个同时具有[Authorize]和[Route]属性的控制器动作(如果重要的话),如下所示:

[Route("myarea/someaction")]
[Authorize]
public IActionResult SomeAction()
{
    return View("SomeAction");
}

我已将应用程序配置为通过使用AddOpenIdConnect()等来使用Azure AD登录(如果需要,我可以提供更多详细信息)。

当我转到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。

0 个答案:

没有答案