Spring Security默認會對靜態文件進行攔截,這個問題在Spring MVC中也出現過,Spring MVC的解決辦法是在配置文件中加入靜態資源的引用配置,但是Spring boot + Spring Security整合中采用全註解方式,沒有配置文件,因此需要進行如下改動:
@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true) //開啟security註解public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Bean
@Override
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
} @Override
protected void configure(HttpSecurity http) throws Exception { //允許所有用戶訪問"/"和"/home"
http.authorizeRequests()
.antMatchers("/home").permitAll() //其他地址的訪問均需驗證權限
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login") ?//指定登錄頁是"/login"
.defaultSuccessUrl("/list") ?//登錄成功後默認跳轉到"list"
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/home") ?//退出登錄後的默認url是"/home"
.permitAll();
} @Override
public void configure(WebSecurity web) throws Exception { //解決靜態資源被攔截的問題
web.ignoring().antMatchers("/global/**");
}
}
Spring boot的默認靜態資源放置位置是在resource/static下,可以在static下新建壹個文件夾,然後在上述方法中指定跳過攔截的文件路徑即可。
Spring Boot:
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
Spring Security是壹個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了壹組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴註入)和AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重復代碼的工作。