WebSecurityConfigurerAdapter 被弃用,帮我编写新的解决方式
时间: 2023-07-27 09:14:31 浏览: 148
springboot:springboot学习百里香WebSecurityConfigurerAdapter
是的,从Spring Security 5.0版本开始,WebSecurityConfigurerAdapter已被弃用,推荐使用更加灵活的方式来配置Spring Security。以下是一种新的配置方式示例:
首先,您需要创建一个继承自WebSecurityConfigurer的配置类,并使用@EnableWebSecurity注解来启用Spring Security。
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig implements WebSecurityConfigurer<WebSecurity> {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public void configure(WebSecurity web) throws Exception {
// 配置不需要进行身份认证的URL
web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and()
.logout().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 配置用户信息来源和密码加密方式
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder);
}
@Bean
public PasswordEncoder passwordEncoder() {
// 配置密码加密方式
return new BCryptPasswordEncoder();
}
}
```
上述代码中,我们使用了WebSecurityConfigurer接口来实现Spring Security的配置。configure(WebSecurity web)方法用于配置不需要进行身份认证的URL,configure(HttpSecurity http)方法用于配置哪些URL需要哪些角色才能访问,configure(AuthenticationManagerBuilder auth)方法用于配置用户信息来源和密码加密方式。
此外,我们还使用了PasswordEncoder接口来加密密码。在上述代码中,我们使用了BCryptPasswordEncoder实现类来加密密码。您也可以使用其他实现类来加密密码,例如:MD5PasswordEncoder。
希望这些信息能对您有所帮助!
阅读全文