帶你詳細瞭解Spring Security的註解方式開發

默認情況下,不會開啟註解,如果想用註解,需要開啟註解支持。

在啟動類上開啟:

@EnableGlobalMethodSecurity(securedEnabled = true)

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
// 開啟springSecurity註解支持
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SeqeurityTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SeqeurityTestApplication.class, args);
    }
}

以下的註解可以放在Service接口或方法上,也可以寫到Controller 的方法上。但通常寫在控制器方法上。

常用的註解

(1)@Secured

相當於配置類中的hasRole()方法。

@Secured 是專門用於判斷是否具有某個角色。能寫在方法上或類上。參數要以 ROLE_開頭。

使用:

// 隻有 有角色abc的登錄者才能訪問這個接口
@Secured(value="ROLE_abc")
@RequestMapping (value = "/login1")
public String login() {
    return "login11";
}

上邊的角色對應的是:

(2)@PreAuthorize / @PostAuthorize

@PreAuthorize / @PostAuthorize 都是方法級別的註解。

@PreAuthorize 表示訪問方法或類在執行之前先判斷權限,大多數情況下使用這個註解,註解的參數和access() 方法參數取值相同,都是權限表達式。

@PostAuthorize 表示方法或類執行結束後判斷權限,此註解很少使用。

使用上邊兩個註解,必須要開啟註解支持:

// 開啟springSecurity註解支持
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)

測試

// 隻有 有角色abc的登錄者才能訪問這個接口,參數是access表達式
@PreAuthorize("hasRole('abc')") // 可以寫成 @PreAuthorize("hasRole('ROLE_abc')")
@RequestMapping (value = "/login1")
public String login() {
    return "login11";
}

總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: