asp.net - 将 [Authorize] 与 [Route("xyz")] 一起使用时的无限循环
问题描述
我有一个同时具有 [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。
解决方案
推荐阅读
- pandas - PySpark:在新 Spark DataFrame 上使用现有 Spark DataFrame 的 Schema
- python - Python Selenium 查找元素(输入)
- javascript - 不能在模块中使用 console.log()
- laravel - 使用 Laravel 7 和 livewire 1.0.13 时如何解决错误
- react-native - 使用 React Native 可访问的货币数字
- xcode - Can I build a MacOS version of my app that will run on anything earlier than 10.15 using Xcode11?
- unity3d - 在 Start 中调用的 Time.time 的值是否总是等于在第一次调用 Update 时调用的值?
- r - 如何在ggplot2中使用线/块分隔制作连续图
- amazon-web-services - AWS SSM RunCommand - Issue with RunRemoteScript Document to run PowerShell script with parameters
- docker - 如何禁用为公共访问添加到 iptables 的所有 docker 规则?