无Spring Boot的Spring Security认证失效,同配置Spring Boot却正常?
关于非Spring Boot环境下Spring Security认证失效的问题
刚好碰到过类似的情况,确实和Spring Boot的自动配置机制有很大关系——Spring Boot帮我们悄悄装配了很多Spring Security运行必需的核心组件,比如过滤器链、认证管理器这些;但如果不用Spring Boot,这些都得我们手动去配置,不然认证功能根本没法正常跑起来。
先给你贴一下正常使用Spring Boot时的请求映射完整示例代码,你可以参考下它的结构:
@SpringBootApplication public class SampleLDAPApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SampleLDAPApplication.class, args); } @Bean public WebMvcConfigurerAdapter adapter() { return new WebMvcConfigurerAdapter() { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/login").setViewName("login"); // 这里可以继续添加其他需要直接映射的视图,比如认证成功后的跳转页、首页等 } }; } }
为啥非Spring Boot环境会出问题?核心原因有这几点:
- Spring Boot的
@SpringBootApplication注解包含了@EnableAutoConfiguration,会自动启用Spring Security的自动配置类,帮我们初始化好认证所需的基础环境 - 非Spring Boot环境下,你得手动添加
@EnableWebSecurity注解开启Spring Security的Web安全功能,还要自己配置SecurityFilterChain、AuthenticationManager这些核心Bean - 另外,视图控制器的配置在非Spring Boot环境下,也得确保Spring MVC的配置类被正确扫描到,比如给配置类加上
@EnableWebMvc注解
如果要在非Spring Boot环境下让Spring Security认证正常工作,你至少要做这些操作:
- 创建专门的安全配置类并添加
@EnableWebSecurity注解 - 重写
configure(HttpSecurity http)方法,配置登录页、认证规则、权限控制逻辑等 - 手动配置对应认证方式的提供者Bean(比如LDAP认证、数据库账号密码认证)
内容的提问来源于stack exchange,提问作者gdrt
相关产品推荐
相关产品推荐

