@EnableWebSecurity注解的作用和示例

@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来实现用户认证。