帶你詳細(xì)了解Spring Security的注解方式開發(fā)
默認(rèn)情況下,不會(huì)開啟注解,如果想用注解,需要開啟注解支持。
在啟動(dòng)類上開啟:
@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
相當(dāng)于配置類中的hasRole()方法。
@Secured 是專門用于判斷是否具有某個(gè)角色。能寫在方法上或類上。參數(shù)要以 ROLE_開頭。

使用:
// 只有 有角色abc的登錄者才能訪問這個(gè)接口
@Secured(value="ROLE_abc")
@RequestMapping (value = "/login1")
public String login() {
return "login11";
}
上邊的角色對(duì)應(yīng)的是:

(2)@PreAuthorize / @PostAuthorize
@PreAuthorize / @PostAuthorize 都是方法級(jí)別的注解。
@PreAuthorize 表示訪問方法或類在執(zhí)行之前先判斷權(quán)限,大多數(shù)情況下使用這個(gè)注解,注解的參數(shù)和access() 方法參數(shù)取值相同,都是權(quán)限表達(dá)式。
@PostAuthorize 表示方法或類執(zhí)行結(jié)束后判斷權(quán)限,此注解很少使用。

使用上邊兩個(gè)注解,必須要開啟注解支持:
// 開啟springSecurity注解支持 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
測(cè)試
// 只有 有角色abc的登錄者才能訪問這個(gè)接口,參數(shù)是access表達(dá)式
@PreAuthorize("hasRole('abc')") // 可以寫成 @PreAuthorize("hasRole('ROLE_abc')")
@RequestMapping (value = "/login1")
public String login() {
return "login11";
}
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
SpringMVC中請(qǐng)求參數(shù)的獲取方式
這篇文章主要為大家介紹了SpringMVC中請(qǐng)求參數(shù)的獲取方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼
延時(shí)隊(duì)列場(chǎng)景在我們?nèi)粘I(yè)務(wù)開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊(duì)列,本文就來介紹一下SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Java的String類中的startsWith方法和endsWith方法示例詳解
大家應(yīng)該都知道startsWith()方法用于檢測(cè)字符串是否以指定的前綴開始,endsWith()方法用于測(cè)試字符串是否以指定的后綴結(jié)束,本文就Java的String類中的startsWith方法和endsWith方法給大家詳細(xì)講解,感興趣的朋友一起看看吧2023-11-11
Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn)
這篇文章主要介紹了Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
java利用mybatis攔截器統(tǒng)計(jì)sql執(zhí)行時(shí)間示例
這篇文章主要介紹了java利用mybatis攔截器統(tǒng)計(jì)sql執(zhí)行時(shí)間示例,該攔截器攔截mybatis的query和update操作,能統(tǒng)計(jì)sql執(zhí)行時(shí)間2014-03-03

