1. 程式人生 > 實用技巧 >認證和授權學習3:springsecurity實現方法級的許可權控制

認證和授權學習3:springsecurity實現方法級的許可權控制

認證和授權學習3:springsecurity實現方法級的許可權控制

本文使用的springboot版本是2.1.3.RELEASE

上一篇:springsecurity快速入門

本文記錄下在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中如何進行方法級的許可權控制。分為兩步,第一,在配置類上開啟方法許可權控制

第二步,在對應的方法上加上控制註解指定許可權。

完整的示例工程: 示例工程