自定义一次性令牌输入页面失效,请求排查方案
解决OTT自定义提交页面不生效的排查步骤
检查静态资源/模板文件位置
确认login-student-submit.html的存放位置符合Spring Boot的资源规则:- 静态HTML文件放
src/main/resources/static/或src/main/resources/public/目录 - 若使用Thymeleaf等模板引擎,文件需放
src/main/resources/templates/,同时确保构建文件(pom.xml/build.gradle)中已引入对应模板引擎依赖
- 静态HTML文件放
验证页面可直接访问
启动服务后,在浏览器直接访问http://<你的域名>:<端口>/login-student-submit.html,如果返回404,先解决页面的访问问题,这是自定义页面生效的前提。放行提交页面的安全拦截
在Spring Security配置中,必须允许未登录用户访问该提交页面,添加放行规则:@Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // ... 其他配置 .authorizeHttpRequests(auth -> auth .requestMatchers("/login-student-submit.html").permitAll() // 其他授权规则 .anyRequest().authenticated() ) .oneTimeTokenLogin((ott) -> ott .tokenService(new CustomConsumeOneTimeTokenService(jdbcTemplate())) .tokenGeneratingUrl("/request-ott") .defaultSubmitPageUrl("/login-student-submit.html") .defaultSuccessUrl("/student-dashboard", true) .showDefaultSubmitPage(false) ); return http.build(); }排查配置覆盖问题
检查项目中是否存在多个oneTimeTokenLogin配置,或者父级配置类中有没有覆盖当前设置的规则。确保你的自定义配置是最终生效的那一个。调试令牌消费逻辑
在CustomConsumeOneTimeTokenService的核心方法(比如consume)中添加日志输出,查看令牌验证过程中是否触发了跳转,有没有异常抛出导致流程回退到默认页面。确认版本兼容性
如果你使用的Spring Security或OTT相关扩展有版本差异,某些配置项的行为可能不同。查看对应版本的官方文档,确认showDefaultSubmitPage(false)和defaultSubmitPageUrl的配合使用是否有特殊要求。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

