【JEECG技术文档】JEECG 接口权限开发及配置使用说明_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 【JEECG技术文档】JEECG 接口权限开发及配置使用说明

【JEECG技术文档】JEECG 接口权限开发及配置使用说明

 2018/2/7 15:26:13  zhangdaiscott  程序员俱乐部  我要评论(0)
  • 摘要:1.功能介绍通过接口配置实现,对接口的访问权限控制和数据权限控制,接口时REST接口,接口权限认证机制使用Jsonwebtoken(JWT)接口权限调用流程:(1)通过接口用户的用户名密码,调用鉴权token接口获取接口用户的token该token,2个小时内有效(2)把获取的token作为参数,调用接口的时候,会根据token去鉴权(3)鉴权通过,接口会根据接口定义的编码,检验是否有访问权限有则可以继续访问,无则提示访问受限(4)有访问权限,则获取接口的数据权限规则
  • 标签:JEE 使用说明 文档 使用 配置 开发 接口 技术

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 ?
    class="dp-j">
  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. ????} ?
发表评论
用户名: 匿名