@EnableWebSecurity 和 @EnableWebMvcSecurity 有什么区别

java

1个回答

写回答

blaublume

2025-07-06 20:25

+ 关注

Spring
Spring

@EnableWebSecurity和@EnableWebMvcSecurity是Spring Security框架中用于启用Web安全功能的注解。它们的主要区别在于它们所处的Spring Security版本以及它们对于Spring MVC的集成方式。

@EnableWebSecurity注解用于Spring Security 3.2及以前的版本,它是基于XML配置的方式来启用Web安全功能。通过在配置类上添加@EnableWebSecurity注解,我们可以使用Java配置来代替传统的XML配置方式来配置Spring Security。该注解会自动应用默认的Spring Security配置,并允许我们进行自定义配置。

下面是一个使用@EnableWebSecurity注解的示例代码:

Java

@Configuration

@EnableWebSecurity

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

auth

.inMemoryAuthentication()

.withUser("user").password("{noop}password").roles("USER");

}

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/public/<strong>").permitAll()

.anyRequest().authenticated()

.and()

.formLogin()

.loginPage("/login")

.defaultSuccessUrl("/home")

.permitAll()

.and()

.logout()

.logoutUrl("/logout")

.permitAll();

}

}

在上述示例中,我们创建了一个WebSecurityConfig配置类,并在该类上添加了@EnableWebSecurity注解。在configureGlobal方法中,我们使用内存中的用户凭据进行身份认证。在configure方法中,我们配置了HTTP请求的访问控制规则以及登录和注销的相关设置。

@EnableWebMvcSecurity注解用于Spring Security 3.2及以后的版本,它是基于注解的方式来启用Web安全功能。与@EnableWebSecurity注解不同,@EnableWebMvcSecurity注解是基于@Configuration注解的一个元注解,用于启用Spring MVC集成的安全性。

下面是一个使用@EnableWebMvcSecurity注解的示例代码:

Java

@Configuration

@EnableWebMvcSecurity

public class WebMvcSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

auth

.inMemoryAuthentication()

.withUser("user").password("{noop}password").roles("USER");

}

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/public/</strong>").permitAll()

.anyRequest().authenticated()

.and()

.formLogin()

.loginPage("/login")

.defaultSuccessUrl("/home")

.permitAll()

.and()

.logout()

.logoutUrl("/logout")

.permitAll();

}

}

在上述示例中,我们创建了一个WebMvcSecurityConfig配置类,并在该类上添加了@EnableWebMvcSecurity注解。该注解会自动应用默认的Spring Security配置,并允许我们进行自定义配置。

@EnableWebSecurity和@EnableWebMvcSecurity都是用于启用Web安全功能的注解,但它们所处的Spring Security版本以及它们对于Spring MVC的集成方式是不同的。

通过@EnableWebSecurity注解,我们可以使用Java配置的方式来自定义配置Spring Security,而@EnableWebMvcSecurity注解是基于注解的方式来启用Spring MVC集成的安全性。

无论是使用哪种注解,我们都可以根据具体的需求来配置Spring Security,包括身份认证、访问控制规则以及登录和注销等功能。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号