Spring Boot 自动配置 : SecurityAutoConfiguration

SecurityAutoConfigurationSpring Boot提供的安全自动配置类。

它仅在类DefaultAuthenticationEventPublisher存在于classpath上时才进行配置。配置包含如下几个方面 :

  1. 注册安全属性bean SecurityProperties,相应的配置属性来自外部配置项 spring.security,这些属性会被相应的安全配置机制采用;
  2. 注册bean AuthenticationEventPublisher,实现类型使用DefaultAuthenticationEventPublisher;

    仅在类型为AuthenticationEventPublisherbean不存在时才定义;

  3. 导入另外三个安全配置类 :
    • SpringBootWebSecurityConfiguration

      如果用户没有提供自定义的WebSecurityConfigurerAdapter,则提供一个缺省的WebSecurityConfigurerAdapter用于配置Sping Security Web安全。

    • WebSecurityEnablerConfiguration

      Servlet环境中,bean WebSecurityConfigurerAdapter 存在,并且名为springSecurityFilterChainbean不存在的情况下,使用注解@EnableWebSecurity。该配置文件的作用是万一用户忘记了使用注解@EnableWebSecurity,这里保证该注解被使用从而保障springSecurityFilterChain bean的定义。

    • SecurityDataConfiguration

      配置Spring SecuritySpring Data的整合,仅在Spring Security Data被使用时才启用。具体来讲,是在SecurityEvaluationContextExtension类存在于classpath(Spring Security Data包的一个类)上并且容器中不存在该类型的bean时,向容器注册一个这样的bean

源代码

源代码版本 : spring-boot-autoconfigure 2.1.3.RELEASE


package org.springframework.boot.autoconfigure.security.servlet;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.security.SecurityDataConfiguration;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.security.authentication.AuthenticationEventPublisher;
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;

// 这是一个配置类
@Configuration
// 仅在类 DefaultAuthenticationEventPublisher 存在于 classpath 上时才启用
@ConditionalOnClass(DefaultAuthenticationEventPublisher.class)
// 注册配置属性 bean : 
// 名称 : spring.security-org.springframework.boot.autoconfigure.security.SecurityProperties 
// 类型 SecurityProperties
// 对应属性前缀 : spring.security
@EnableConfigurationProperties(SecurityProperties.class)
// 导入另外三个配置文件
@Import({ SpringBootWebSecurityConfiguration.class, WebSecurityEnablerConfiguration.class,
		SecurityDataConfiguration.class })
public class SecurityAutoConfiguration {


    // 定义一个认证事件发布器bean,仅在类型为 AuthenticationEventPublisher 的bean不
    // 存在于容器上时才生效
	@Bean
	@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
	public DefaultAuthenticationEventPublisher authenticationEventPublisher(
			ApplicationEventPublisher publisher) {
       //  所定义的认证事件发布器bean类型使用  DefaultAuthenticationEventPublisher    
		return new DefaultAuthenticationEventPublisher(publisher);
	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值