【工作记录】基于springboot3+springsecurity6实现多种登录方式
@Configuration
public class SecurityConfig {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
// 配置登录页面
.formLogin(form -> form
.loginPage("/login")
.permitAll()
)
// 配置登出行为
.logout(logout -> logout
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.permitAll()
)
// 配置其他路径的安全要求
.authorizeHttpRequests(authz -> authz
.requestMatchers("/", "/home", "/about").permitAll()
.requestMatchers("/admin/**").hasRole("ADMIN")
.requestMatchers("/db/**").hasRole("DBA")
.anyRequest().authenticated()
)
// 配置HTTP basic认证
.httpBasic(withDefaults())
// 配置CSRF保护
.csrf(csrf -> csrf
.ignoringAntMatchers("/h2-console/**")
)
// 配置无授权响应
.exceptionHandling(exceptions -> exceptions
.accessDeniedPage("/access-denied")
)
// 如果使用H2数据库控制台,允许所有用户
.headers(headers -> headers
.frameOptions().sameOriginToClients()
);
return http.build();
}
}
这个代码实例展示了如何在Spring Security中配置一个基本的安全过滤链,包括登录页面、登出行为、不同路径的权限控制、HTTP基本认证、CSRF保护和无授权访问时的响应页面配置。这是一个基础配置,可以根据实际需求进行扩展和定制。
评论已关闭