要在Spring Boot項目中整合Spring Security實現認證攔截,你可以按照以下步驟操作:
添加Spring Security依賴:在pom.xml文件中添加Spring Security的依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
創建Spring Security配置類:創建一個繼承自WebSecurityConfigurerAdapter
的配置類,用于配置Spring Security。
import org.springframework.context.annotation.Configuration;
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 {
}
配置認證和授權規則:在配置類中重寫configure()
方法,配置認證和授權規則。
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
創建登錄頁面:創建一個登錄頁面,例如login.html。
配置用戶信息和密碼加密:在配置類中重寫configure()
方法,配置用戶信息和密碼加密方式。
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin")
.password(passwordEncoder().encode("admin123"))
.roles("ADMIN");
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // 使用BCryptPasswordEncoder進行密碼加密
}
配置忽略靜態資源:在配置類中重寫configure()
方法,配置忽略靜態資源的訪問限制。
import org.springframework.security.config.annotation.web.builders.WebSecurity;
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/css/**", "/js/**", "/images/**");
}
運行項目并測試:啟動Spring Boot項目并訪問需要認證的資源,系統將跳轉到登錄頁面,輸入用戶名密碼即可完成認證。
這樣就完成了Spring Boot整合Spring Security實現認證攔截的配置。你可以根據需要進行相應的定制和擴展。