Spring中的@EnableWebSecurity注解详解
@EnableWebSecurity注解
首先,EnableWebSecurity注解是个组合注解,它的注解中,又使用了@EnableGlobalAuthentication注解:
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import({WebSecurityConfiguration.class, SpringWebMvcImportSelector.class, OAuth2ImportSelector.class}) @EnableGlobalAuthentication @Configuration public @interface EnableWebSecurity { boolean debug() default false; }
WebSecurityConfiguration.class
首先,激活了WebSecurityConfiguration配置类,在这个配置类中, 注入了一个非常重要的bean, bean的name为: springSecurityFilterChain
这是Spring Secuity的核心过滤器, 这是请求的认证入口。
源码片段如下:
@Bean( name = {"springSecurityFilterChain"} ) public Filter springSecurityFilterChain() throws Exception { boolean hasConfigurers = this.webSecurityConfigurers != null && !this.webSecurityConfigurers.isEmpty(); if (!hasConfigurers) { WebSecurityConfigurerAdapter adapter = (WebSecurityConfigurerAdapter)this.objectObjectPostProcessor.postProcess(new WebSecurityConfigurerAdapter() { }); this.webSecurity.apply(adapter); } return (Filter)this.webSecurity.build(); } @Bean @DependsOn({"springSecurityFilterChain"}) public WebInvocationPrivilegeEvaluator privilegeEvaluator() { return this.webSecurity.getPrivilegeEvaluator(); }
@EnableGlobalAuthentication
使用了EnableGlobalAuthentication 注解, 注解源码为:
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import({AuthenticationConfiguration.class}) @Configuration public @interface EnableGlobalAuthentication { }
在这个注解中,激活了AuthenticationConfiguration配置类, 这个类是来配置认证相关的核心类, 这个类的主要作用是,向spring容器中注入AuthenticationManagerBuilder。 这个类使用了建造者模式, 它能构建AuthenticationManager, 这个类前面提过,是身份认证的入口。
总结
EnableWebSecurity注解有两个作用:
- 加载了WebSecurityConfiguration配置类, 配置安全认证策略。
- 加载了AuthenticationConfiguration, 配置了认证信息。
到此这篇关于Spring中的@EnableWebSecurity注解详解的文章就介绍到这了,更多相关@EnableWebSecurity注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java正则表达式判断是否包含数字、字母、特殊字符及中文的多种方法
这篇文章主要给大家介绍了关于Java正则表达式判断是否包含数字、字母、特殊字符及中文的多种方法,Java正则表达式在字符串处理和模式匹配中扮演着重要角色,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-08-08SpringBoot LocalDateTime格式转换方案详解(前端入参)
这篇文章主要介绍了SpringBoot LocalDateTime格式转换(前端入参),本文用示例介绍SpringBoot全局格式配置,将前端传过来的时间自动转化为LocalDateTime,需要的朋友可以参考下2023-04-04详解JAVA中ListIterator和Iterator的辨析
这篇文章主要为大家详细介绍了JAVAListIterator和Iterator的辨析,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助2022-02-02
最新评论