Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 精品视频一区二区三区,中文字幕精品一区二区日本大胸 ,91精品国产麻豆国产自产在线

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          MySQL數據庫字段級權限設計

          一、 引言

          二、 方案

          方案二

          方案三

          對外權限分配接口

          存在的問題

          三、 代碼

          最初是打算在Spring Aop的前置通知中通過修改目標方法參數來實現,但是通過源碼發現封裝目標方法參數的類是用final修飾的,所以后面換了種思路。

          使用Spring的ator自動代理實現,思路是通過條件判斷決定是否要使用自動代理,要使用代理的話,就需要自己實現接口并重寫其中invoke方法。

          下面我貼出核心代碼,文章最后會給出整個demo的鏈接

          繼承ator類,重寫()方法

          public class BeanTypeAutoProxyCreator extends AbstractAutoProxyCreator {
              @Override
              protected Object[] getAdvicesAndAdvisorsForBean(Class beanClass, 
                  String beanName, TargetSource customTargetSource) throws BeansException {
                  return isMatch(beanClass) ? PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS : DO_NOT_PROXY;
              }
              /**
               * 判斷是否是需要被代理的對象
               * @param clazz 代理對象的類型
               * @return
               */
              private boolean isMatch(Class clazz) {
                  //有兩個Class類型的類象,一個是調用isAssignableFrom方法的類對象(后稱對象a),
                  // 以及方法中作為參數的這個類對象(稱之為對象b),這兩個對象如果滿足以下條件則返回true,否則返回false:
                  
                  //a對象所對應類信息是b對象所對應的類信息的父類或者是父接口,簡單理解即a是b的父類或接口
          

          權限庫表數據設計怎么做_數據庫 權限表設計_權限管理表數據庫設計

          //a對象所對應類信息與b對象所對應的類信息相同,簡單理解即a和b為同一個類或同一個接口 if (BaseMapper.class.isAssignableFrom(clazz)) { return true; } return false; } }

          實現接口,重寫invoke()方法

          public class MyMethodInterceptor implements MethodInterceptor {
              @Autowired
              private SysAccess sysAccess;
              @Override
              public Object invoke(MethodInvocation invocation) throws Throwable {
                  // 權限封裝類
                  SysAccessCriteria result = null;
                  int flag = -1;
                  // 目標方法的參數
                  Object[] args = invocation.getArguments();
                  for (int i=0; i數據庫 權限表設計_權限庫表數據設計怎么做_權限管理表數據庫設計

          if(flag >= 0 && result != null){ args[flag] = result; } // 執行目標方法 Object object = invocation.proceed(); return object; } }

          配置到Spring配置文件中

          
          
              
              
                  
                      myMethodInterceptor
                  
              
          
          

          Demo完整代碼(數據庫文件在目錄下):

          單純個人設計,應該有很多不足,有不好的地方可以指出,或者有更好的想法可以評論,一起交流。

          參考:


          主站蜘蛛池模板: 精品国产高清自在线一区二区三区| 亚洲综合一区无码精品| 亚洲熟妇无码一区二区三区导航| 精品女同一区二区三区免费播放| 日本一区二区三区精品中文字幕| 国模无码视频一区二区三区| 亚洲国产精品一区| 中文无码AV一区二区三区| 亚洲av无码一区二区三区天堂| 成人精品一区二区三区不卡免费看 | 亚洲欧洲专线一区| 亚洲一区影音先锋色资源| 亚洲A∨精品一区二区三区| 国产成人av一区二区三区在线 | 精品国产一区二区三区AV性色| 国产成人一区二区三中文| 无码人妻一区二区三区在线| 久久精品无码一区二区app| 精品在线一区二区三区| 国产日韩视频一区| 国产一区二区福利久久| 成人精品一区久久久久| 午夜视频在线观看一区| 另类国产精品一区二区| 爱爱帝国亚洲一区二区三区| 在线观看一区二区三区视频| 性色AV一区二区三区天美传媒| 亚洲视频一区在线观看| 亚洲AV无码一区二区三区在线| 亚洲丰满熟女一区二区v| 99精品一区二区三区| 精品视频无码一区二区三区| 日韩精品区一区二区三VR| 亚洲视频一区网站| 在线观看精品视频一区二区三区| 日本一区高清视频| 一区二区三区伦理高清| 国产麻豆精品一区二区三区v视界 国产美女精品一区二区三区 | 亚洲男人的天堂一区二区| 亚洲福利精品一区二区三区| 天堂Aⅴ无码一区二区三区|