我一直在圈子里奔跑,试图了解为什么我的React应用程序处于无限循环中。当我尝试将其与AD FS集成时,一切开始发生。基本上,除了将用户引导到登录页面之外,我还需要访问后端,该后端位于.net核心中,调用质询架构以到达Ad FS登录页面。
然后我决定创建一个简单的react应用程序以尝试模拟此问题。事实证明,这是通过Visual Studio作为模板创建的最简单的react应用程序发生的。
发布应用程序后,我第一次调用该URL,该应用程序到达后端以加载所有内容。我将在下面更好地解释它,以下是解决此问题的步骤:
- 在Visual Studio中使用React Application创建一个新的.Net Core Web
- 将其发布到您的任何文件夹中
- 转到已发布的文件夹,从此处打开CMD并只需键入
donet myReactApp.dll
,其中“ myReactApp”将是项目的名称。与在IIS上发布相同。 - 我认为该应用程序将在端口5001上运行。您现在应该可以从浏览器访问它。
- 打开检查元素并进入网络标签。
- 在页面中单击“ 胎儿数据”标签
- 转到网络标签,并查看所发出的请求。这将通过URL https://localhost:5001/api/SampleData/WeatherForecasts 进入后端
- 现在,复制该URL,并将其粘贴到浏览器的另一个选项卡中。
- 首次执行此操作将检索带有数据的模型并在屏幕上打印JSON
- 再试一次,您将看到前端应用程序将返回,并且没有数据
这是问题所在,该应用程序仅是第一次访问后端。之后,React似乎尝试自行解决所有路由。就我而言,由于请求失败,因此我的应用程序重定向到我的“登录”页面,从而导致无限循环。
很难解释,也很难理解为什么会发生。感谢对此问题React-router urls don't work when refreshing or writing manually的解释,我对它有了更多的了解。但是,我仍然找不到解决方法。
现在,这正是我的应用程序中正在发生的事情。我需要验证用户是否已经在AD FS服务器上进行了身份验证。如果未通过身份验证,我将向后端发出请求,以将用户重定向到“ AD FS登录”页面。这是问题所在,它没有进入后端,再次调用了我的登录页面,并且由于尚未通过身份验证,因此一直处于循环状态。
有人遇到过这个问题吗?