2024年最全让Spring Security 来保护你的Spring Boot项目吧,死磕原理
在Spring Security中,我们可以通过配置类来定义安全策略,以保护Spring Boot项目。以下是一个简单的配置示例:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 配置用户详情服务
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("USER", "ADMIN");
}
// 配置http安全选项
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll() // 允许所有用户访问主页
.anyRequest().authenticated() // 其他请求需要认证
.and()
.formLogin()
.loginPage("/login") // 自定义登录页面
.permitAll() // 允许所有用户访问登录页面
.and()
.logout()
.permitAll(); // 允许所有用户登出
}
}
在这个配置类中,我们定义了两个方法:
configure(AuthenticationManagerBuilder auth)
:用于配置用户详情服务,这里使用了内存中的用户,实际应用中可以配置为使用数据库或其他用户详情服务。configure(HttpSecurity http)
:用于配置HTTP安全选项,包括登录页面、登出以及哪些URL路径需要保护等。
这个配置类通过注解@EnableWebSecurity
启用了Spring Security,并覆盖了WebSecurityConfigurerAdapter
类的方法来定义安全策略。在实际应用中,你可以根据具体需求进行相应的配置调整。
评论已关闭