权限管理注解扫描部分~
由于使用Shiro的注解用到了cglib 真是运行的方法并不是贴有注解的方法 ,而是其父类,所以会导致常规方法拿不到注解,参考网上的资料通过一下的方式可以获得注解,注意红字的部分
for (Object o : beans.values()) { for (Method method : o.getClass().getDeclaredMethods()) { //获取RequiresPermissions注解 RequiresPermissions anno = AnnotationUtils.findAnnotation(method, RequiresPermissions.class); //获取获取自定义name注解 PermissionName perName = AnnotationUtils.findAnnotation(method, PermissionName.class); //如果注解不为空进入 if (anno != null) { //获取RequiresPermissions中的值 String express = anno.value()[0]; //判断这个值数据库中的表达式是否出现过 if (!allExpression.contains(express)) { //如果没有出现过 则new一个permissin对象 Permission permission = new Permission(); //判断自定义名称是否为空 if (perName != null) { //不为空则设置进权限对象 permission.setName(perName.value()); } //将RequiresPermissions注解的值设置到权限对象 permission.setExpression(express); //保存 permissionMapper.insert(permission); } } } }
获取su
//获取父类上的方法才有注解
Method[] methods = bean.getClass().getSuperclass().getDeclaredMethods();
浙公网安备 33010602011771号