Spring中的@EnableWebSecurity注解详解
目录
- @EnableWebSecurity注解
- WebSecurityConfiguration.class
- @EnableGlobalAuthentication
- 总结
@EnableWebSecurity注解
首先,EnableWebSecurity注解是个组合注解,它的注解中,又使用了@EnableGlobalAuthentication注解:
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import({WebSecurityConfiguration.class, SpringWebMvcImportSelector.class, OAuth2ImportSelector.class}) @EnableGlobalAuthentication @Cjsonfiguration 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); }vsuYbrENM 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, 这个类前面提过,是身份认证的入口。
总结
EnabjsleWebSecurity注解有两个作用:
- 加载了WebSecurityCon编程客栈figuration配置类, 配置安全认证策略。
- 加载了AuthenticationConfiguration, 配置了认证信息。
到此这篇关于Spring中的@EnableWebSecurity注解详解的文章就介绍到这了,更多相关@EnableWebSecurity注解内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论