Я бегал кругами, пытаясь понять, почему мое приложение реагирует в бесконечном цикле. Все начало происходить, когда я пытался интегрировать его с AD FS. По сути, вместо того, чтобы отправлять пользователя на страницу входа в систему, мне нужно запустить бэкэнд, который находится в ядре .net, вызывая схему вызова, чтобы перейти на страницу входа в Ad FS.
Тогда я решилсоздайте простое приложение реагирования, чтобы попытаться смоделировать эту проблему. Оказывается, это происходит с самым простым приложением реагирования, созданным Visual Studio в качестве шаблона.
После публикации приложения я в первый раз вызываю URL, приложение попадает в бэкэнд, чтобы загрузить все. Я объясню это лучше ниже, вот шаги, чтобы добраться до проблемы:
- создать новый .Net Core Web с React Application в Visual Studio
- опубликовать его в любомВаша папка
- перейдите в опубликованную папку, откройте оттуда CMD и просто введите
donet myReactApp.dll
, где «myReactApp» будет названием проекта. Это то же самое, что и публикация в IIS. - Я думаю, что приложение будет работать на порте 5001. Вы должны быть в состоянии получить к нему доступ из браузера сейчас.
- Откройте элемент проверки и перейдите на вкладку Сеть .
- На странице перейдите на вкладку « Fecth Data »
- Перейдите на вкладку Сеть и посмотрите на сделанный запрос,Это происходит с бэкэндом через URL https://localhost:5001/api/SampleData/WeatherForecasts
- Теперь скопируйте этот URL и вставьте его в другую вкладку в вашем обзоре.
- При первом выполнении он получитМодель с данными и напечатайте JSON на экране
- Попробуйте еще раз, и вы увидите, что приложение переднего плана вернется, без данных
Этопроблема, приложение попадает в бэкэнд только в первый раз. После этого React пытается разрешить все маршруты самостоятельно. В моем случае из-за сбоя запроса мое приложение перенаправляется на мою страницу входа в систему, вызывая бесконечный цикл.
Трудно объяснить, а также трудно понять, почему это происходит. Благодаря объяснению по этому вопросу URL-адреса React-маршрутизатора не работают при обновлении или записи вручную Я смог немного больше понять об этом. Тем не менее, я до сих пор не могу найти способ ее решить.
Теперь вот что именно происходит в моем приложении. Мне нужно проверить, если пользователь уже прошел проверку подлинности на сервере AD FS. Если он не аутентифицирован, я делаю запрос к бэкэнду, чтобы перенаправить пользователя на страницу входа AD FS. Вот в чем проблема, она не попадает в бэкэнд, снова вызывает мою страницу входа в систему, и поскольку она еще не аутентифицирована, она остается в цикле.
Кто-нибудь имел эту проблему?