#spring #spring-boot #togglz #featuretoggle
#spring #весенняя загрузка #переключение #поиск возможностей
Вопрос:
Я использую Spring Boot и Spring Security в своем проекте для управления доставкой статических веб-ресурсов. До сих пор моему приложению было достаточно идентифицировать пользователей с помощью Spring Security и разрешать им доступ к этим ресурсам. Впоследствии я контролирую доставку определенных ресурсов с помощью флагов функций (https://www.togglz.org/documentation/spring-boot-starter.html). Используя флаги функций, можно проверить, включена ли функция (например, «ТЕСТ»), вызвав FeatureManager
компонент во время выполнения следующим образом: manager.isActive(FeatureToggles.TEST)
. Чтобы получить доступ к флагу для управления веб-ресурсами, я попытался использовать функциональность отображения Spring:
@Controller
@RequestMapping("/")
public class IndexController {
private FeatureManager manager;
public IndexController(FeatureManager manager) {
this.manager = manager;
}
...
@RequestMapping(path ="myFeature/")
public ModelAndView redirectToMyFeature(ModelMap modelMap) {
if (manager.isActive(FeatureToggles.TEST)) {
return new ModelAndView("redirect:", modelMap);
}
return null;
}
К сожалению, этот код приводит к бесконечному циклу. Интересно, как обрабатывать сопоставление с тем же путем с условиями (см. Код выше). Существуют ли другие способы использования Spring Boot для управления доставкой определенных ресурсов во время выполнения?
Комментарии:
1. можете ли вы объяснить мне, почему он создает бесконечный цикл со сценарием? вы имеете в виду, что даже статические ресурсы также запрашивают аутентификацию?
2. потому что я сделал так, что /myFeature/ перенаправляет на /myFeature/, поэтому метод redirectToMyFeature вызывается снова и снова. И в консоли браузера есть «Найдено 302». Все статические ресурсы защищены и запрашивают аутентификацию, и это желаемое поведение. Но я не хочу, чтобы ресурсы по пути / myFeature / были доступны даже для аутентифицированных пользователей, пока флаг «TEST» не будет включен в консоли администратора пользовательского интерфейса FeatureTogglz.