Java中的@PreAuthorize注解使用詳解
@PreAuthorize注解使用
@PreAuthorize注解會(huì)在方法執(zhí)行前進(jìn)行權(quán)限驗(yàn)證,支持Spring EL表達(dá)式,它是基于方法注解的權(quán)限解決方案。只有當(dāng)@EnableGlobalMethodSecurity(prePostEnabled=true)的時(shí)候,@PreAuthorize才可以使用,@EnableGlobalMethodSecurity注解在SPRING安全中心進(jìn)行設(shè)置,如下:
/**
* SPRING安全中心
* @author ROCKY
*/
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}注解如何使用?
@Operation(summary = "通過(guò)id查詢(xún)檔案報(bào)表", description = "通過(guò)id查詢(xún)檔案報(bào)表")
@GetMapping("/{reportId}" )
@PreAuthorize("@pms.hasPermission('archsys_sysarchreport_view')" )
public R getById(@PathVariable("reportId" ) Long reportId) {
return R.ok(sysArchReportService.getById(reportId));
}自定義權(quán)限實(shí)現(xiàn)
@PreAuthorize("@pms.hasPermission('archsys_sysarchreport_view')" )
- pms是一個(gè)注冊(cè)在 Spring容器中的Bean,對(duì)應(yīng)的類(lèi)是cn.hadoopx.framework.web.service.PermissionService;
- hasPermission是PermissionService類(lèi)中定義的方法;
- 當(dāng)Spring EL 表達(dá)式返回TRUE,則權(quán)限校驗(yàn)通過(guò);
- PermissionService.java的定義如下:
public class PermissionService {
/**
* 判斷接口是否有任意xxx,xxx權(quán)限
* @param permissions 權(quán)限
* @return {boolean}
*/
public boolean hasPermission(String... permissions) {
if (ArrayUtil.isEmpty(permissions)) {
return false;
}
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
return false;
}
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
return authorities.stream().map(GrantedAuthority::getAuthority).filter(StringUtils::hasText)
.anyMatch(x -> PatternMatchUtils.simpleMatch(permissions, x));
}
}@RequiredArgsConstructor
@EnableConfigurationProperties(PermitAllUrlProperties.class)
public class PigResourceServerAutoConfiguration {
/**
* 鑒權(quán)具體的實(shí)現(xiàn)邏輯
* @return (#pms.xxx)
*/
@Bean("pms")
public PermissionService permissionService() {
return new PermissionService();
}
}到此這篇關(guān)于Java中的@PreAuthorize注解使用詳解的文章就介紹到這了,更多相關(guān)@PreAuthorize注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot使用war包部署到外部tomcat過(guò)程解析
這篇文章主要介紹了springboot使用war包部署到外部tomcat過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Java數(shù)組擴(kuò)容實(shí)現(xiàn)方法解析
這篇文章主要介紹了Java數(shù)組擴(kuò)容實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringMVC實(shí)現(xiàn)防止重復(fù)提交表單的方法詳解
在Web開(kāi)發(fā)中,防止表單重復(fù)提交是一個(gè)常見(jiàn)的需求,本文將介紹幾種在SpringMVC框架中防止表單重復(fù)提交的有效方法,有需要的小伙伴可以了解下2025-06-06
記錄一次connection reset 錯(cuò)誤的解決全過(guò)程
這篇文章主要介紹了記錄一次connection reset 錯(cuò)誤的解決全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
深入了解Springboot核心知識(shí)點(diǎn)之?dāng)?shù)據(jù)訪(fǎng)問(wèn)配置
這篇文章主要為大家介紹了Springboot核心知識(shí)點(diǎn)中的數(shù)據(jù)訪(fǎng)問(wèn)配置,文中的示例代碼講解詳細(xì),對(duì)我們了解SpringBoot有一定幫助,快跟隨小編一起學(xué)習(xí)一下吧2021-12-12

