Spring Security 第一節 簡單的使用
阿新 • • 發佈:2020-08-09
security 配置類
@EnableWebSecurity// 啟用Sucerity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests() //方法有很多子方法,每個子匹配器將會按照宣告的順序起作用。
.antMatchers("/user/h1/**").permitAll() // antMatchers 指定資源路徑,permitAll 放行,不進行攔截。
// .antMatchers( "/role/**").hasRole("role") //role 資源必須使用role角色才能訪問
// .antMatchers( "/db/**").access("hasRole('ADMIN') and hasRole('DBA')") //同時滿足兩個角色才可以訪問
.anyRequest().authenticated();//其餘所有情況需要認證才可以訪問
}
}
測試控制器
@RestController
@RequestMapping("/user")
public class AuthUserController extends BaseController {
@RequestMapping("/h1")
public String h1(){
return "user h1";
}
@RequestMapping("/h2")
public String h2(){
return "user h2";
}
}
測試
啟動後,只有user/h1控制器可以訪問,其他都不能進行訪問。
登陸表單
http.formLogin(); 啟用表單,則訪問需要沒有許可權的資源則跳轉到登陸頁面。
解決跨域問題
//第1步:解決跨域問題。cors 預檢請求放行,讓Spring security 放行所有preflight request(cors 預檢請求) http.authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll();
不建立session
//第2步:讓Security永遠不會建立HttpSession,它不會使用HttpSession來獲取SecurityContext
http.csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().headers().cacheControl();
來源:站長資訊中心