【Spring】springSecurity中WebSecurityConfigurerAdapter类中configure方法(5版本以下)

泡芙冰淇淋ya 2024-10-09 09:03:01 阅读 100

1、简介

在Spring Security中,<code>WebSecurityConfigurerAdapter 类是一个配置适配器,它提供了多种 configure 方法的重载,允许开发者以声明性的方式配置Web安全。

2、相关规则

1. configure(WebSecurity web)

此方法用于配置哪些请求应该被Spring Security的过滤器链忽略。这通常用于静态资源(如CSS、JS、图片等),这些资源不需要进行安全认证。

@Override

public void configure(WebSecurity web) throws Exception {

web.ignoring()

.antMatchers("/css/**", "/js/**", "/images/**", "/favicon.ico");

}

2. configure(HttpSecurity http)

这是 WebSecurityConfigurerAdapter 中最重要的 configure 方法之一,它用于配置HTTP安全。通过这个方法,你可以定义哪些URL模式需要被保护,以及如何进行身份验证和授权。

@Override

protected void configure(HttpSecurity http) throws Exception {

http

// 启用CSRF保护

.csrf().disable() // 注意:出于示例目的,这里禁用了CSRF保护,实际项目中应启用

// 配置请求授权

.authorizeRequests()

.antMatchers("/login", "/register", "/public/**").permitAll() // 这些URL允许匿名访问

.anyRequest().authenticated() // 其他所有请求都需要认证

.and()

// 配置表单登录

.formLogin()

.loginPage("/login") // 自定义登录页面

.defaultSuccessUrl("/home", true) // 登录成功后的默认跳转页面

.failureUrl("/login-error") // 登录失败后的页面

.permitAll() // 允许所有人访问登录页面

.and()

// 配置登出

.logout()

.logoutUrl("/logout") // 登出请求的URL

.logoutSuccessUrl("/login?logout") // 登出成功后的跳转页面

.permitAll() // 允许所有人访问登出功能

.and()

// 添加HTTP安全头部

.headers()

.frameOptions().deny() // 禁止iframe

.and()

// 会话管理

.sessionManagement()

.invalidSessionUrl("/invalid-session"); // 无效会话时的跳转页面

}

3. configure(AuthenticationManagerBuilder auth)

此方法用于配置认证管理器(AuthenticationManager),它决定了如何对用户进行身份验证。可以通过它来定义用户信息的来源(如内存、数据库、LDAP等)和密码的加密方式。

@Autowired

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

// 使用内存中的用户进行认证

auth

.inMemoryAuthentication()

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

.and()

.withUser("admin").password("{noop}admin").roles("USER", "ADMIN");

// 或者使用自定义的用户详情服务

// auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());

}

@Bean

public PasswordEncoder passwordEncoder() {

return new BCryptPasswordEncoder();

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。