zoukankan      html  css  js  c++  java
  • 通过反射实现javaweb项目中权限的刷新

    记录是为了更好的成长!

    1、贴一段实际项目的中的代码

    /**
         * @Methods: permissionreload
         * @Description: 权限重载 
         * @return
         */
        @RequestMapping("/permissionreload")
        public String permissionreload() {
            
            //0、从数据库中查出所有权限,进行对比,如果已经存在,跳过,不在添加
            List<String> resouceList = permissionService.listPermissionUrls();
            
            //1、获取Controller中所有的RequestMapping
            Map<RequestMappingInfo,HandlerMethod> handlerMethods = rmhm.getHandlerMethods();
            
            Collection<HandlerMethod> values = handlerMethods.values();
            for(HandlerMethod method:values) {
                
                //2、遍历所有方法,判断当前方法是否贴有@RequiresPermissions  权限控制标签
                RequiresPermissions anno = method.getMethodAnnotation(RequiresPermissions.class);
                if(anno != null) {
                    
                    //取得权限表达式
                    String resourcesUrl = anno.value()[0];
                    
                    //去除重复
                    if(resouceList.contains(resourcesUrl)) {
                        continue;
                    }
                    
                    //封装对象,添加到数据库表中
                    Permission p = new Permission();
                    p.setUrl(resourcesUrl);
                    //设置权限名称
                    p.setPname(method.getMethodAnnotation(PermissionName.class).value());
                    
                    //保存到数据库
                    permissionService.add(p);
                }    
            }
            return "/login/login";
        }

    以上内容代表个人观点,仅供参考,不喜勿喷。。。

  • 相关阅读:
    JavaScript深入学习(四)DOM
    Python学习(六)简单例子
    Python学习(五)常见函数及控制结构
    Python学习(四)运算符
    Python学习(三)格式化输出
    Spark学习(二)scala语法
    JavaScript学习(三)深入学习
    表的完整性约束
    创建表的完整语法和基本数据类型
    mysql基础
  • 原文地址:https://www.cnblogs.com/newbest/p/10054120.html
Copyright © 2011-2022 走看看