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");
}
// 配置URL的访问权限
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll() // 允许所有用户访问主页
.anyRequest().authenticated() // 其他所有请求需要认证
.and()
.formLogin()
.loginPage("/login") // 自定义登录页面
.permitAll() // 允许所有用户访问登录页面
.and()
.logout()
.permitAll(); // 允许所有用户登出
}
}
这段代码定义了一个Spring Security的配置类,它使用@EnableWebSecurity
注解启用了Web安全功能,并继承了WebSecurityConfigurerAdapter
类。在configure
方法中,我们配置了内存中的用户详情服务,并设置了不同用户的角色。同时,我们还配置了HTTP安全策略,包括哪些URL是开放的,哪些需要认证,以及自定义了登录和登出页面。这为开发者提供了一个清晰的安全配置示例。
评论已关闭