日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

淺談基于SpringBoot實現一個簡單的權限控制注解

瀏覽:24日期:2023-03-26 10:11:59

注解是 JDK 5.0 引入的一種注釋機制。注解可以作用在類型(類、接口、枚舉等)、屬性、方法、參數等不同位置,具體的 JDK 版本所支持的注解位置可參考 java.lang.annotation.ElementType 。此外還有注解的策略,也就是 RetentionPolicy ,這里不加贅述。

注解可以實現很多功能,其中最主要的就是進行代碼標注,所以有時候注解也叫做標注。使用起來也基本顧名思義,就是對代碼進行標注,簡化部分代碼的邏輯。

下面我們就著手實現一個簡單的權限控制注解,來對注解有一個基本的了解。

準備@Permission 注解

注解本身的代碼很簡單。下面實現的是一個 @Permission 注解,為了方便使用,這里只提供一個屬性value,因為如果一個注解中有一個名稱為value的屬性,且你只想設置value屬性(即其他屬性都采用默認值或者你只有一個value屬性),那么可以省略掉“value=”部分。

import java.lang.annotation.*;@Target({ElementType.PARAMETER}) // 注解可用于參數@Retention(RetentionPolicy.RUNTIME) // 注解在運行時可由JVM讀入@Documentedpublic @interface Permission { String value() default '';}User 類

一個簡單的User類,包含 permissions 用于保存用戶的權限。

import lombok.Data;@Datapublic class User { private String id; private String name; private Set<String> permissions;}UserService 類

簡單的 Service 類,用于判斷權限。

@Servicepublic class UserService { public boolean checkCreatePermission(@Permission('創建用戶') User user) { return true; } public boolean checkDeletePermission(@Permission('刪除用戶') User user) { return true; }}PermissionAspect 類

利用 SpringBoot 簡單地設置切面,獲取注解并使用。這里直接

@Aspect@Componentpublic class PermissionAspect { // 需要修改為實際的 Service 所在的 Package @Pointcut('execution(public * tk.yubarimelon.MongoDemo.service.*.*(..))') public void permissionCheck() { } @Around('permissionCheck()') public Object before(ProceedingJoinPoint joinPoint) throws Throwable { Object[] params = joinPoint.getArgs(); // 獲取方法,此處可將signature強轉為MethodSignature MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); // 獲取參數注解,1維是參數,2維是注解 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for (int i = 0; i < parameterAnnotations.length; i++) { Object param = params[i]; Annotation[] annotations = parameterAnnotations[i]; if (!(param instanceof User) || annotations.length == 0) {continue; } for (Annotation annotation : annotations) {if (annotation.annotationType().equals(Permission.class)) { Permission permission = (Permission) annotation; User user = (User) param; if (CollectionUtils.isEmpty(user.getPermissions())) { log.error(user.getName() + ' 無任何權限!'); return false; } if (!StringUtils.hasLength(permission.value())) { log.error(joinPoint.getSignature().toString() + '權限設置異常'); return false; } if (!user.getPermissions().contains(permission.value())) { log.error(joinPoint.getSignature().toString() +': '+user.getName() + ' 無權限: ' + permission.value()); return false; } return joinPoint.proceed();} } } return joinPoint.proceed(); }}ApplicationTests 類

簡單的測試類,用于測試代碼。這里簡單的配置一個用戶只有創建用戶的權限

@SpringBootTestclass ApplicationTests { @Autowired UserService userService; @Test void contextLoads() { } @Test void checkUser() { User user = new User(); user.setName('小明'); Set<String> permissions = new HashSet<>(); permissions.add('創建用戶'); user.setPermissions(permissions); System.out.println('checkCreatePermission ' + userService.checkCreatePermission(user)); System.out.println('checkDeletePermission ' + userService.checkDeletePermission(user)); }}

輸出如下日志,證明權限設置起作用了。

checkCreatePermission true2021-01-31 11:44:45.895 ERROR 12388 --- [ main] t.y.MongoDemo.aop.PermissionAspect : boolean tk.yubarimelon.MongoDemo.service.UserService.checkDeletePermission(User): 小明 無權限: 刪除用戶checkDeletePermission false

到此這篇關于淺談基于SpringBoot實現一個簡單的權限控制注解的文章就介紹到這了,更多相關SpringBoot 權限控制注解內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区三区四区精品视频| av日韩中文| 在线亚洲免费| 亚洲欧美日本国产专区一区| 日韩在线黄色| 亚洲激情社区| 天堂成人免费av电影一区 | 青草国产精品| 国产极品嫩模在线观看91精品| 日韩av免费大片| 欧美激情另类| 亚洲综合日韩| 福利片在线一区二区| 久久精品资源| 欧洲一区二区三区精品| 国产视频一区在线观看一区免费| 国产精品毛片在线| 中文字幕亚洲精品乱码| 日韩成人在线看| 亚洲黄色网址| 视频在线观看91| 亚洲高清激情| 午夜一级久久| 成人高清一区| 午夜久久av| 99tv成人| 国产精品一线天粉嫩av| 99在线观看免费视频精品观看| 日韩在线欧美| 婷婷综合六月| 精品久久久久中文字幕小说| 欧美日韩一区二区三区四区在线观看| 亚洲婷婷免费| 国产真实久久| 99久久夜色精品国产亚洲1000部 | 亚洲成人精品| 精品日韩一区| 日韩二区在线观看| 久久国产免费| caoporn视频在线| 国产精品日韩欧美一区| 国产午夜精品一区在线观看| 伊人网在线播放| 日韩中文字幕亚洲一区二区va在线| 国产日韩一区| 99久久精品网| 日韩高清一区在线| 日韩综合精品| 日本久久二区| 1024精品一区二区三区| 亚洲三级在线| 中文一区一区三区高中清不卡免费| 亚洲自啪免费| 精品三级久久久| 蜜桃av一区二区三区电影| 老司机免费视频一区二区| 亚洲资源av| а√在线中文在线新版| 免费在线观看不卡| 日韩国产激情| 欧美日韩一区二区三区四区在线观看| 日韩精品欧美激情一区二区| 日本不卡中文字幕| 久久久国产亚洲精品| 日韩精品国产欧美| 私拍精品福利视频在线一区| 偷拍亚洲精品| 久久国产成人午夜av影院宅| 国产精品一在线观看| 亚洲一区二区三区免费在线观看| 国产一区日韩| 日韩黄色av| 在线看片不卡| 亚洲国产欧美日本视频| 国产欧美亚洲一区| 日韩影院精彩在线| 欧洲av不卡| 久久的色偷偷| 日韩国产在线一| 国产亚洲精品v| 日韩综合精品| 欧美激情网址| 日本成人精品| 视频一区二区不卡| 色天使综合视频| 国产精品1区在线| 亚洲久久在线| 国产免费成人| 欧美成人久久| 久久国产毛片| 日韩欧美午夜| 久久男人天堂| 久久久久久自在自线| 麻豆精品久久久| 欧美日韩一区二区三区四区在线观看| 亚洲一区日本| 国产综合婷婷| 99精品综合| 久久久久国产| 深夜福利视频一区二区| 麻豆精品视频在线观看| 国产精品视频一区二区三区四蜜臂| 亚洲三级网址| 综合激情五月婷婷| 午夜一级久久| 久久午夜影视| 日韩精品一区第一页| 美女精品网站| 蜜臀久久99精品久久久久久9| 欧美日韩国产在线一区| 久久久久久黄| 99国产精品免费视频观看| 欧洲av一区二区| 久久久久中文| 1024精品久久久久久久久| 亚洲成人日韩| 日韩午夜精品| 日本欧美在线看| 蜜臀国产一区二区三区在线播放| 午夜在线精品偷拍| 中文字幕亚洲影视| 亚洲v天堂v手机在线| 日韩精品91亚洲二区在线观看| 亚洲人妖在线| 欧美日韩中出| 国产精品久久久久77777丨| 亚洲精品伊人| 国产免费av一区二区三区| 久久不见久久见国语| 老色鬼精品视频在线观看播放| 美女国产一区二区三区| 精品久久美女| 成人在线网站| 黄色亚洲精品| 免费观看日韩电影| 日韩高清不卡一区| 国产精品红桃| 国产a久久精品一区二区三区| 黄色aa久久| 免费成人网www| 丝袜美腿亚洲色图| 亚洲区欧美区| 免费在线欧美黄色| 欧洲一级精品| 性一交一乱一区二区洋洋av| 日韩精品国产精品| 老司机免费视频一区二区三区| 国产99在线| 狠狠爱成人网| 日韩三级久久| 精品99在线| 免费观看久久av| 亚洲精品韩国| 久久精品免视看国产成人| 成人日韩在线观看| 亚洲一区中文| 日韩三级一区| 国产一区二区三区四区| 久久久9色精品国产一区二区三区| 99在线|亚洲一区二区| 日本精品另类| 在线天堂中文资源最新版| 日韩亚洲在线| 欧美视频精品全部免费观看| 水蜜桃精品av一区二区| 91精品亚洲| 日本精品国产| 日韩免费久久| 亚洲影院天堂中文av色| 久久伊人国产| 国模 一区 二区 三区| 亚洲欧美激情诱惑| 欧美日本不卡高清| 国产99在线| 男女性色大片免费观看一区二区 | 国内一区二区三区| 亚洲精品在线观看91| 日韩精品国产精品| 蜜臀国产一区| 影音先锋久久精品| 福利在线免费视频| 日本中文字幕一区二区视频| 久久久天天操| 国产精品久一| 日韩在线a电影| 91精品韩国| 欧美一级网址| 黑丝一区二区| 国产一区二区三区不卡视频网站| 美女精品在线| 国产精品字幕| 国产精品久久久久久久久久妞妞| 99在线精品视频在线观看| 精品淫伦v久久水蜜桃| 国产精品婷婷| 欧美羞羞视频| 久久一区亚洲| 青青草国产精品亚洲专区无| 中日韩男男gay无套| 桃色av一区二区|