zoukankan      html  css  js  c++  java
  • 【JEECG技术文档】JEECG 接口权限开发及配置使用说明

    1.功能介绍

     

    通过接口配置实现,对接口的访问权限控制和数据权限控制,接口时REST接口,接口权限认证机制使用Json web token (JWT)

    接口权限调用流程:

        (1)通过接口用户的用户名密码,调用鉴权token接口获取接口用户的token

                 该token,2个小时内有效

        (2)把获取的token作为参数,调用接口的时候,会根据token去鉴权

        (3)鉴权通过,接口会根据接口定义的编码,检验是否有访问权限

                有则可以继续访问,无则提示访问受限

        (4)有访问权限,则获取接口的数据权限规则,根据授权的数据权限规则返回需要的数据

         实现一个新的接口,无需关注token的鉴权机制,需要实现以下步骤:

        (1)开发一个rest接口

        (2)枚举类InterfaceEnum中定义接口编码

       (3)调用InterfaceUtil工具类getInterfaceRuleDto获取接口权限,验证是否有访问权限,并获取数据权限

       (4)根据获取的数据权限,组装查询条件返回接口数据

    2. 权限接口定义

     

    开发一个接口rest接口,

    public enum InterfaceEnum   类中定义接口编码

    [java] view plain copy
     
    1. blacklist_list("blacklist_list", "黑名单分页查询", "/rest/tsBlackListController", "GET", 1)  
    2. blacklist_list 为接口编码  

    3. 接口管理

    3.1  配置接口权限,

        接口权限管理--接口权限录入,

      

      接口添加:

     

    说明:

    •     接口权限编码:该编码比较重要,每个接口一个编码,不能重复。该编码由开发者制定(见接口权限开发,接口编码定义)
    •     接口权限名称:定义名称
    •     接口权限等级:一级权限,下级权限区分
    •     父级接口:上下级关系维护(父子关系)
    •     接口权限地址:接口请求地址
    •  请求方式:GET、POST、PUT、DELETE
    •     接口权限排序:树形列表展示的顺序

        以上信息:接口权限编码字段比较重要,其他的字段与权限控制无关,只做说明使用

    3.2 增加数据规则权限

        

     

    4. 创建接口角色

     

    4.1 创建接口角色,进行角色授权,然后分配角色给接口用户

          接口权限---接口角色管理   创建接口角色

     

    5. 接口开发实现

     

    接口中增加业务逻辑:

    5.1 校验接口访问权限

    [java] view plain copy
     
    1. InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.blacklist_list);  
    2.         if(interfaceRuleDto==null){  
    3.             return Result.error("您没有该接口的权限!");  
    4.         }  

    5.2 接口权限规则注入

         方案一:

         查询器处理

    [java] view plain copy
     
    1. CriteriaQuery cq = new CriteriaQuery(TsBlackListEntity.class, dataGrid);  
    2. nterfaceUtil.installCriteriaQuery(cq, interfaceRuleDto, InterfaceEnum.blacklist_list);  

        方案二:

        Sql和hql 处理

    [java] view plain copy
     
    1. String qlStr = InterfaceUtil.getQL(interfaceRuleDto, InterfaceEnum.blacklist_list);  

      把组装的qlStr 追加到查询语句中

    6. 接口测试

     
    [java] view plain copy
     
    1. //获取token  
    2. public static String getToken(String userName,String password){  
    3.         String url = "http://localhost:8888/jeecg-bpm/rest/tokens?username="+userName+"&password="+password;  
    4.         String token= JwtHttpUtil.httpRequest(url, "POST", null);  
    5.         return token;  
    6.     }  
    7.       
    8.       
    9.     //获取黑名单列表  
    10.     public static JSONObject getBlackList(String token){  
    11.         String url = "http://localhost:8888/jeecg-bpm/rest/tsBlackListController";  
    12.         JSONObject resp= JwtHttpUtil.httpRequest(url, "GET", null,token);  
    13.         return resp;  
    14.     }  
    15.   
    16.   
    17. public static void main(String[] args) {  
    18.        //接口角色授权的用户账号密码  
    19.         String token = getToken("interfaceuser","123456");  
    20.         //获取黑名单列表  
    21.         System.out.println("======获取黑名单列表======="+getBlackList(token));  
    22.     }  
  • 相关阅读:
    Java页面中文编码要转换两次encodeURI
    ajax用get刷新页面元素在IE下无效解决~~
    祝贺自己开博~~
    错误域控降级导致解析问题
    ELK 脚本自动化删除索引
    Windows针对子目录共享权限控制
    ES查询区分大小写
    Docker异常时区问题
    Docker自定义镜像无容器日志输出
    ELK时间戳
  • 原文地址:https://www.cnblogs.com/jeecg158/p/8427184.html
Copyright © 2011-2022 走看看