WebSecurityConfigurerAdapter
时间: 2023-09-02 19:10:42 浏览: 94
WebSecurityConfigurerAdapter 是一个抽象类,用于配置 Spring Security 的 Web 安全性。它实现了 WebSecurityConfigurer 接口,并提供了一些默认的配置方法。[1]
其中,configure(WebSecurity web) 方法用于配置 WebSecurity,它是基于 Servlet Filter 来配置 springSecurityFilterChain。springSecurityFilterChain 又被委托给了 Spring Security 核心过滤器 Bean DelegatingFilterProxy。通常情况下,我们不会过多自定义 WebSecurity,而是使用 ignoring() 方法来忽略 Spring Security 对静态资源的控制。[2]
在 WebSecurityConfigurerAdapter 中,init(final WebSecurity web) 方法用于初始化 SecurityBuilder(在这里指的对象构建器就是 WebSecurity,将要构建的对象就是 Filter 对象)。在该方法中,并没有进行真正的配置工作,配置工作最终交由 config 方法完成。[3]
总之,WebSecurityConfigurerAdapter 是一个用于配置 Spring Security Web 安全性的抽象类,它提供了一些默认的配置方法,可以根据需要进行自定义配置。
相关问题
websecurityconfigureradapter
WebSecurityConfigurerAdapter是Spring Security的一个内置适配器,用于快速配置Web应用程序的安全性。它提供了很多的配置选项,例如身份验证、授权、CORS和CSRF保护等。使用它可以简化配置过程,减少编写重复代码的工作。
WebSecurityConfigurerAdapter setAccessDecisionManager
WebSecurityConfigurerAdapter 中的 setAccessDecisionManager 方法是用来设置访问决策管理器(AccessDecisionManager)的。
访问决策管理器是 Spring Security 中的一个核心概念,用于在用户请求访问资源时决定是否允许访问。它根据访问策略和用户的身份信息来决定是否授权访问。
setAccessDecisionManager 方法用于配置访问决策管理器,通常需要传入一个实现了 AccessDecisionManager 接口的类的实例,例如 AffirmativeBased、ConsensusBased 等。
下面是一个示例:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomAccessDecisionManager accessDecisionManager;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.accessDecisionManager(accessDecisionManager)
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
```
在上面的示例中,我们通过 accessDecisionManager 方法设置了自定义的访问决策管理器 CustomAccessDecisionManager。这样,在用户请求访问资源时,就会使用 CustomAccessDecisionManager 中的访问决策逻辑来决定是否授权访问。
阅读全文