SpringSecurityConfig:注解EnableWebSecurity启⽤Web安全
@EnableWebSecurity是SpringSecurity⽤于启⽤Web安全的注解。典型的⽤法是该注解⽤在某个Web安全配置类上(实现了接
⼝WebSecurityConfigurer或者继承⾃WebSecurityConfigurerAdapter)。典型的使⽤例⼦如下:
@Configuration
@EnableWebSecurity
publicclassMyWebSecurityConfigurationextendsWebSecurityConfigurerAdapter{
@Override
publicvoidconfigure(WebSecurityweb)throwsException{
ng()
//SpringSecurityshouldcompletelyignoreURLsstartingwith/resources/
.antMatchers("/resources/**");
}
@Override
protectedvoidconfigure(HttpSecurityhttp)throwsException{
izeRequests().antMatchers("/public/**").permitAll().anyRequest()
.hasRole("USER").and()
//Possiblymoreconfiguration...
.formLogin()//enableformbadlogin
//tpermitAllforallURLsassociatedwithFormLogin
.permitAll();
}
@Override
protectedvoidconfigure(AuthenticationManagerBuilderauth)throwsException{
auth
//enableinmemorybadauthenticationwithaurnamed"ur"and"admin"
.inMemoryAuthentication().withUr("ur").password("password").roles("USER")
.and().withUr("admin").password("password").roles("USER","ADMIN");
}
//Possiblymoreoverriddenmethods...
}
该注解其实起到了如下效果:
1.控制SpringSecurity是否使⽤调试模式(通过注解属性debug指定),缺省为fal,表⽰缺省不使⽤调试模式;
2.导⼊WebSecurityConfiguration,⽤于配置Web安全过滤器FilterChainProxy;
1.若⼲个WebSecurityConfigurerAdapter作⽤于⼀个WebSecurity⽣成⼀个最终使⽤的web安全过滤器FilterChainProxy
3.如果是Servlet环境,导⼊WebMvcSecurityConfiguration;
4.如果是OAuth2环境,导⼊OAuth2ClientConfiguration;
5.使⽤注解@EnableGlobalAuthentication启⽤全局认证机制;
SpringSecurity依赖于全局认证机制,所以这⾥启⽤全局认证机制是很⾃然的事。
注解@EnableGlobalAuthentication⼜导⼊了AuthenticationConfiguration⽤于全局认证机制配置;
AuthenticationConfiguration主要⽬的⽤于配置认证管理器组件AuthenticationManager。
AuthenticationManager会在运⾏时⽤于认证请求者⾝份。
在⾮Springboot的SpringWebMVC应⽤中,该注解@EnableWebSecurity需要开发⼈员⾃⼰引⼊以启⽤Web安全。⽽在基
于Springboot的SpringWebMVC应⽤中,开发⼈员没有必要再次引⽤该注解,Springboot的⾃动配置机制WebSecurityEnablerConfiguration已经
引⼊了该注解,如下所⽰:
t;
//省略imports⾏
@Configuration
//仅在存在WebSecurityConfigurerAdapterbean时该注解才有可能⽣效
//(最终⽣效与否要结合其他条件综合考虑)
@ConditionalOnBean()
//仅在不存在springSecurityFilterChain时该注解才有可能⽣效
//(最终⽣效与否要结合其他条件综合考虑)
@ConditionalOnMissingBean(name=_SECURITY_FILTER_CHAIN)
//仅在Servlet环境下该注解才有可能⽣效
//(最终⽣效与否要结合其他条件综合考虑)
@ConditionalOnWebApplication(type=T)
@EnableWebSecurity//<======这⾥启⽤了Web安全
publicclassWebSecurityEnablerConfiguration{
}
WebSecurityEnablerConfiguration对注解@EnableWebSecurity的使⽤并没有遵循上⾯所举的典型⽤法的例⼦。实际上,⼀个SpringWeb应⽤
中,WebSecurityConfigurerAdapter可能有多个,@EnableWebSecurity可以不⽤在任何⼀个WebSecurityConfigurerAdapter上,可以⽤在每
个WebSecurityConfigurerAdapter上,也可以只⽤在某⼀个WebSecurityConfigurerAdapter上。多处使⽤@EnableWebSecurity注解并不会导致问
题,其最终运⾏时效果跟使⽤@EnableWebSecurity⼀次效果是⼀样的。
源代码
源代码版本E
uration;
nted;
ion;
;
uration;
;
GlobalAuthentication;
urityConfigurer;
/**
*
*@eWebSecurityConfigurer
*@eWebSecurityConfigurerAdapter
*
*@authorRobWinch
*@since3.2
*/
@Retention(value=E)
@Target(value={})
@Documented
//导⼊WebSecurityConfigurationWeb安全配置,SpringWebMvc有关安全的配置,OAuth2有关安全的配置
@Import({,
,
})
//启⽤全局安全认证机制
@EnableGlobalAuthentication
@Configuration
public@interfaceEnableWebSecurity{
/**
*tisfal.
*@returniftrue,enablesdebugsupportwithSpringSecurity
*/
booleandebug()defaultfal;
}
本文发布于:2022-12-09 18:29:53,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/74158.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |