帶你詳細了解Spring Security的注解方式開發(fā)
默認情況下,不會開啟注解,如果想用注解,需要開啟注解支持。
在啟動類上開啟:
@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 是專門用于判斷是否具有某個角色。能寫在方法上或類上。參數(shù)要以 ROLE_開頭。
使用:
// 只有 有角色abc的登錄者才能訪問這個接口 @Secured(value="ROLE_abc") @RequestMapping (value = "/login1") public String login() { return "login11"; }
上邊的角色對應的是:
(2)@PreAuthorize / @PostAuthorize
@PreAuthorize / @PostAuthorize 都是方法級別的注解。
@PreAuthorize 表示訪問方法或類在執(zhí)行之前先判斷權限,大多數(shù)情況下使用這個注解,注解的參數(shù)和access() 方法參數(shù)取值相同,都是權限表達式。
@PostAuthorize 表示方法或類執(zhí)行結束后判斷權限,此注解很少使用。
使用上邊兩個注解,必須要開啟注解支持:
// 開啟springSecurity注解支持 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
測試
// 只有 有角色abc的登錄者才能訪問這個接口,參數(shù)是access表達式 @PreAuthorize("hasRole('abc')") // 可以寫成 @PreAuthorize("hasRole('ROLE_abc')") @RequestMapping (value = "/login1") public String login() { return "login11"; }
總結
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
SpringBoot實現(xiàn)redis延遲隊列的示例代碼
延時隊列場景在我們?nèi)粘I(yè)務開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊列,本文就來介紹一下SpringBoot實現(xiàn)redis延遲隊列的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-02-02Java的String類中的startsWith方法和endsWith方法示例詳解
大家應該都知道startsWith()方法用于檢測字符串是否以指定的前綴開始,endsWith()方法用于測試字符串是否以指定的后綴結束,本文就Java的String類中的startsWith方法和endsWith方法給大家詳細講解,感興趣的朋友一起看看吧2023-11-11Spring 單元測試中如何進行 mock的實現(xiàn)
這篇文章主要介紹了Spring 單元測試中如何進行 mock的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12java利用mybatis攔截器統(tǒng)計sql執(zhí)行時間示例
這篇文章主要介紹了java利用mybatis攔截器統(tǒng)計sql執(zhí)行時間示例,該攔截器攔截mybatis的query和update操作,能統(tǒng)計sql執(zhí)行時間2014-03-03