@EnableWebSecurity是Spring Security提供的注解,它的作用是用于开启Web安全性支持。当@EnableWebSecurity注解存在时,Spring Security的默认配置将会被应用。
@EnableWebSecurity可以用于@Configuration注解的类上,它可以继承自WebSecurityConfigurerAdapter,并且在继承类中进行各种安全措施的配置。
以下是一个@EnableWebSecurity的示例:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
}
在这个示例中,我们使用@EnableWebSecurity注解开启了Web安全性支持,并在WebSecurityConfig类中继承WebSecurityConfigurerAdapter,并重写了configure方法来实现安全控制。具体地,我们允许对于”/”和”/home”路径的访问,要求对于”/admin/**”路径的访问需要有ADMIN角色,其他所有路径需要身份认证才能访问。我们还重写了configureGlobal方法,使用自定义的UserDetailsService来实现用户认证。