Spring Boot 2.0.0.M6中Togglz Admin Console启用失败问题排查
解决Spring Boot 2.0.0.M6中Togglz Admin Console的模板找不到问题
你遇到的核心问题是Togglz Console的Thymeleaf模板无法被Spring Boot的模板解析器识别,同时可能伴随权限配置的干扰。下面是一步步的解决方案:
1. 改用Togglz Spring Boot Starter依赖
直接引入togglz-console依赖可能缺少Spring Boot集成所需的自动配置逻辑,建议替换为官方的starter,它会自动管理所有必要的依赖和配置项:
<!-- 替换原有的togglz-console依赖 --> <dependency> <groupId>org.togglz</groupId> <artifactId>togglz-spring-boot-starter</artifactId> <version>2.5.0.Final</version> </dependency>
2. 调整Thymeleaf配置,确保扫描Togglz的模板
Togglz Console的模板打包在自身jar包的classpath:/templates/目录下,需要明确配置Spring Boot的Thymeleaf解析器扫描这个路径。在application.properties中添加:
# 配置Thymeleaf扫描所有jar包中的templates目录 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.mode=HTML spring.thymeleaf.cache=false
3. 排查权限配置问题
你设置了togglz.console.secured=true和togglz.console.feature-admin-authority=ROLE_1,这里需要注意两个点:
- 如果还没集成Spring Security,这个配置会触发权限验证失败,进而跳转到不存在的
error模板。测试阶段可以先关闭安全验证:togglz.console.secured=false - 若已经集成Spring Security,需要确保你的安全配置允许拥有
ROLE_1权限的用户访问/api/togglz-console/**路径,比如添加类似的配置:@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/api/togglz-console/**").hasRole("1") // 其他安全配置... }
4. 验证访问路径
确认你的访问路径是正确的:http://localhost:8080/api/togglz-console(因为你设置了server.servlet.context-path=/api)。
完成以上步骤后,重启应用再访问控制台,应该就能正常加载模板了。如果还是有问题,可以开启Togglz的DEBUG日志,查看更详细的错误输出。
内容的提问来源于stack exchange,提问作者alexanoid
相关产品推荐
相关产品推荐

