Измените доступ к статическим веб-ресурсам при загрузке Spring во время выполнения

#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.