新版本 spring security 中的WebSecurityConfigurerAdapter 已经废弃了,该如何进行 spring security 新版本的配置
时间: 2023-07-18 10:44:38 浏览: 96
是的,从 Spring Security 5.0 开始,WebSecurityConfigurerAdapter 已经被废弃了。在 Spring Security 的新版本中,您可以使用更加灵活的方式来进行配置,下面是一个示例:
1.在pom.xml文件中添加Spring Security的依赖:
```xml
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
```
2.创建一个继承自WebSecurityConfigurer的配置类,并覆盖configure方法进行配置。示例代码如下:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(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/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}
```
上述代码中,我们通过configure方法配置了安全规则,使得/public/**的请求不需要认证,其他请求需要认证。我们还配置了一个简单的内存认证,其中用户的用户名为user,密码为password。
3.在application.properties或application.yml文件中配置登录页面的路径。示例代码如下:
```yml
spring:
security:
login:
page: /login
```
这样,当未认证的用户访问需要认证的资源时,系统会自动跳转到登录页面。
需要注意的是,以上只是一个简单的示例,在实际应用中,您可能需要更加复杂的安全规则,也可以使用数据库或LDAP等方式进行认证。另外,我们也为密码编码器提供了一个示例,用于简化密码编码的过程。在实际应用中,您需要根据您的实际需求来选择密码编码器。
阅读全文