Spring Security与Spring Boot Security差异及非Boot环境实现咨询
问题解答
提供的配置代码
@Autowired // 基于JDBC配置认证 public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication().passwordEncoder(passwordEncoder()) .dataSource(dataSource) .usersByUsernameQuery("select username, password, enabled from users where username=?") .authoritiesByUsernameQuery("select username, role from users where username=?") ; } @Override // 配置表单认证,重写configure(HttpSecurity)方法 protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest().authenticated() .and() .formLogin().permitAll() .and() .logout().permitAll(); }
1. 上述配置是否适用于普通Spring应用?
完全适用。这段代码是Spring Security的核心配置逻辑,和Spring Boot没有绑定关系,只要是Spring生态的应用(不管用不用Spring Boot),都可以用这套代码来配置JDBC认证和表单授权。
2. 普通Spring应用与Spring Boot应用使用该配置的差异
在普通Spring应用里用这段代码,需要自己额外做几件事,而Spring Boot会自动帮你搞定:
- 手动引入Spring Security的核心依赖(Spring Boot通过
spring-boot-starter-security启动器自动引入全套相关依赖) - 手动确保配置类被Spring容器扫描到(Spring Boot会自动识别并加载带
@Configuration、@EnableWebSecurity的配置类) - 手动注册Servlet安全过滤器链(Spring Boot的自动配置会完成过滤器链的初始化与注册)
3. Spring Security与Spring Boot Security的区别
- Spring Security:是一个独立的通用安全框架,提供认证、授权、CSRF防护、会话管理等全套安全能力,支持所有Spring生态应用(包括普通Spring MVC、Spring Boot、Spring Cloud等)。
- Spring Boot Security:不是独立框架,它是Spring Boot对Spring Security的自动配置封装。通过
spring-boot-starter-security,它提供了一系列默认配置(比如默认表单登录、默认测试用户、自动注册过滤器链等),让开发者不用写大量样板代码,就能快速启用安全功能。简单说,它就是Spring Security在Spring Boot环境下的便捷使用方案。
4. OAuth属于哪一范畴?
OAuth是一个开放的授权标准(目前主流是OAuth 2.0),不属于Spring Security或Spring Boot本身。但Spring Security提供了专门的扩展模块(比如Spring Security OAuth2),实现了OAuth 2.0的认证、授权逻辑,不管是普通Spring应用还是Spring Boot应用,都可以通过这个模块集成OAuth相关功能。
内容的提问来源于stack exchange,提问作者Moulina Mary A
相关产品推荐
相关产品推荐

