Использование Stormpath и Spring Boot (основано на this tutorial), после того как я запустил свой сервер и успешно вошел в систему с моими учетными данными, все работает нормально. Однако, когда я выхожу из браузера и пытаюсь открыть мое приложение, я получаю цикл перенаправления.Stormpath Spring Boot redirect loop
A minimal example is available here as an archive. Это проект «Грейдл». cd
в каталог внутри архива и запустите сервер с ./gradlew bootRun
. Приложение будет доступно по адресу http://localhost:8080. Для этого необходим ключ API Stormpath. Зарегистрируйтесь, get an API key и скопируйте файл apiKey-XXX.properties в ~/.stormpath/apiKey.properties
. Таким образом Spring Boot подберет файл и будет использовать его по умолчанию (только если у вас есть одно приложение, определенное в Stormpath, то есть).
Войдите в систему, затем закройте браузер (на Mac не просто закрывайте ее красной кнопкой, используйте команду-q или щелкните правой кнопкой мыши значок браузера и выйдите из нее). Перезагрузите его и повторите попытку доступа http://localhost:8080. Вот когда я получаю цикл перенаправления. Пробовал это на Mac и Windows, Firefox и Chrome, то же самое происходит.
Если открыть консоль разработчика я могу видеть, что первый я перенаправлены на страницу входа в систему (достаточно справедливой), то я перенаправлены на /
(Wierd) и так далее ...
Когда я войдите в первый раз, когда я вижу, что файл cookie с именем account
создан для localhost и JSESSIONID
тоже. Когда я перезапускаю браузер, cookie account
не поврежден, а JSESSIONID
регенерируется сервером. Поэтому я предполагаю, что это поведение связано с тем, что JSESSIONID
привязан к сеансу входа в систему или что-то в этом роде.
Есть ли способ настроить это поведение? После перезапуска браузера пользователь должен быть a) все еще зарегистрирован или b) иметь возможность снова регистрироваться. Есть идеи?
Кроме того, на боковой ноте я использую приложение AngularJS в качестве моего интерфейса. Я не думаю, что это должно иметь какое-то значение, но я, хотя это может быть важно (пример приложения содержит некоторый код мира AngularJS hello для этого конца).
Update
Этот вопрос был помечен как ошибка по Stormpath и после выхода com.stormpath.spring:stormpath-default-spring-boot-starter:1.0.RC8.1
она теперь исправлена. See the following answer and the comments for more detail.
Есть ли конфликт с SpringSecurity? – Raffaele
В Tomcat 8.0 есть ошибка.30, которые могут вызвать подобное поведение. См. Https://github.com/spring-projects/spring-boot/issues/4937 для получения дополнительной информации и возможного обходного пути, которое может стоить попробовать. –
Я еще не смог запустить приложение, но в [ quickstart] (https://docs.stormpath.com/java/spring-boot-web/quickstart.html), они сказали, что вы должны установить 'stormpath.application.href' в свой' application.properties', если у вас есть больше, чем один ключ API - и я не могу найти эту конфигурацию в связанных источниках. – Raffaele