我在我的项目中使用 Spring Boot 和 Spring Security 来管理静态 Web 资源的交付。到目前为止,我的应用程序通过 Spring Security 识别用户并允许他们访问这些资源就足够了。随后,我通过功能标志 ( https://www.togglz.org/documentation/spring-boot-starter.html )控制某些资源的交付。FeatureManager
通过使用功能标志,可以通过在运行时调用 Bean来检查是否启用了功能(例如“TEST”),如下所示manager.isActive(FeatureToggles.TEST)
:为了访问管理 Web 资源的标志,我尝试使用 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 来控制运行时某些资源的交付吗?