認證和授權學習3:springsecurity實現方法級的許可權控制
阿新 • • 發佈:2020-11-14
認證和授權學習3:springsecurity實現方法級的許可權控制
本文使用的springboot版本是2.1.3.RELEASE
本文記錄下在springsecurity中如何對方法進行許可權控制
前邊用http.authorizeRequests()
實現了對web資源的保護,如果要實現基於方法的許可權控制,springsecurity也提供了兩類註解來實現。@PreAuthorize,@Secured
一、@Secured 註解實現方法授權
1.1開啟方法授權
在安全配置類上加上註解@EnableGlobalMethodSecurity
開啟方法許可權控制
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true)//開啟方法許可權控制
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//使用者配置
//安全配置
}
1.2 使用@Secured 註解控制方法許可權
在需要進行許可權控制的方法上加註解,類或介面中都可以
public interface ResourceService { //這個方法允許匿名訪問 @Secured("IS_AUTHENTICATED_ANONYMOUSLY") String res1(); //這個方法要有p1角色才能訪問 @Secured("ROLE_P1") String res2(); //這個方法要有P1或p2角色才能訪問 @Secured({"ROLE_P1","ROLE_P2"}) String res3(); }
這樣這三個方法就受許可權控制了。
二、PreAuthorize 註解控制權限
2.1 開啟方法授權
在安全配置類上加註解
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)//開啟方法許可權控制
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//使用者配置
//安全配置
}
2.2 在要控制的方法上使用註解
public interface ResourceService { //匿名訪問 @PreAuthorize("isAnonymous()") String res4(); //擁有角色1,角色名要帶ROLE_字首 @PreAuthorize("hasRole('ROLE_P1')") String res5(); }
三、總結
以上示例了在spring security中如何進行方法級的許可權控制。分為兩步,第一,在配置類上開啟方法許可權控制
第二步,在對應的方法上加上控制註解指定許可權。
完整的示例工程: 示例工程