Spring Boot集成Azure AD认证后返回页面名称而非HTML内容问题
问题根因
- 你在
onInit方法上添加了@ResponseBody注解,该注解会强制Spring MVC将方法返回值直接作为HTTP响应体输出,不会触发视图解析器渲染HTML页面,因此只会返回纯文本的视图名称。你在接入Azure AD调整代码时误加了这个注解,才导致之前正常的视图渲染逻辑失效。 - 你的代码存在括号匹配错误,将视图返回逻辑写在了日志级别判断的分支中:只有当TRACE级日志开启时才会返回首页,否则直接返回错误页,完全不符合你预期的业务逻辑。
修复方案
- 删除
onInit方法上的@ResponseBody注解,让返回的字符串可以被识别为视图名,交由视图解析器处理。 - 修正业务逻辑的括号层级,把视图返回逻辑从日志判断分支中移出,修正后代码如下:
@RequestMapping(value = "/") @PreAuthorize("hasRole('ROLE_group1')" + "|| hasRole('ROLE_group2')" + "|| hasRole('ROLE_group3')") public String onInit( Model model, @RequestHeader(value = "LIST", defaultValue = "group1") String groups, @RequestHeader(value = "USERNAME", defaultValue = "shubham") String userName) { if (userName != null && !userName.isEmpty()) { LOG.trace("<< onInit() Navigating to Home"); return "newhome"; } else { LOG.trace("<< onInit() Navigating to Error"); return "error"; } }
- 确认模板文件存放在正确路径,若使用Thymeleaf等模板引擎,相关依赖没有缺失。
内容的提问来源于stack exchange,提问作者shubham yadav
相关产品推荐
相关产品推荐

