Spring Security配置不生效,无法读取数据库认证信息、不使用自定义登录页
问题根因
启动类的@ComponentScan注解仅配置了扫描mis.controller、mis.services两个包,你的Spring Security相关配置类(MyConfig、UserDetailsServiceImpl等)均存放在mis.config包下,不在Spring的组件扫描范围内,导致自定义安全配置未被加载,Spring Boot走了Security的默认自动配置逻辑,因此出现控制台生成默认密码、使用默认登录页、不读取数据库用户的现象。
修复方案
1. 修正组件扫描配置
修改BitmisApplication启动类的@ComponentScan注解,将mis.config加入扫描路径:
// 方案1:单独添加config包 @ComponentScan({"mis.controller", "mis.services", "mis.config"}) // 方案2:直接扫描顶层mis包,自动覆盖所有子包,后续新增包也无需额外配置 @ComponentScan("mis")
2. 补充自定义登录页配置(可选,仅当你需要使用自研登录页时调整)
当前你在MyConfig中仅配置了formLogin().permitAll(),使用的还是Spring Security自带的默认登录页,如果要替换为自己的登录页,调整configure(HttpSecurity http)方法的formLogin配置段:
.formLogin() .loginPage("/custom-login") // 替换为你自定义登录页的访问路径 .permitAll()
同时需要在Controller中新增对应路径的接口返回登录页视图,若登录页涉及静态资源,也要在配置中放开静态资源的访问权限。
3. 验证效果
修改完成后重启项目,控制台不再输出Using generated security password: xxx的日志,即代表自定义安全配置加载成功,登录请求会自动走UserDetailsServiceImpl的loadUserByUsername方法查询数据库用户信息完成认证。
内容的提问来源于stack exchange,提问作者348_Amit Potdukhe.
相关产品推荐
相关产品推荐

