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 亚洲精品一区二区观看,亚洲国产视频网,国产精品第页

          整合營銷服務商

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

          免費咨詢熱線:

          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无码一区二区三区鸳鸯影院 | 无码人妻久久一区二区三区蜜桃| 无码一区二区三区| 国产伦精品一区二区三区视频猫咪| 久久无码AV一区二区三区| 午夜无码视频一区二区三区| 91精品福利一区二区| 无码精品一区二区三区在线| 国产一区二区四区在线观看| 四虎成人精品一区二区免费网站| 国产一区二区久久久| 精品欧洲av无码一区二区14| 亚洲国产精品一区二区成人片国内 | 在线播放国产一区二区三区 | 亚洲AV无码一区二区三区国产 | 国产一区二区三区在线视頻 | 中文字幕一区二区三区永久 | 久久久久一区二区三区| 国产日韩高清一区二区三区 | 日韩AV片无码一区二区不卡| 国产一区二区不卡老阿姨| 午夜AV内射一区二区三区红桃视| 久久久精品人妻一区二区三区 | 中文字幕一区二区三区有限公司 | 中文字幕永久一区二区三区在线观看| 视频在线观看一区| 国产一区二区三区美女 | 久久久无码精品人妻一区| 亚洲一区二区观看播放| 成人在线观看一区| 国产在线不卡一区| 亚洲A∨精品一区二区三区| 精品久久国产一区二区三区香蕉| 成人一区二区免费视频| 亚欧色一区W666天堂| 91久久精品午夜一区二区| 国产精品美女一区二区三区| 国产乱子伦一区二区三区| 成人区人妻精品一区二区不卡视频 |