1. 程式人生 > 實用技巧 >Spring Security 第一節 簡單的使用

Spring Security 第一節 簡單的使用

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();
來源:站長資訊中心