接口权限配置
===
**目录索引:**
- 功能介绍
- 权限接口定义
- 接口管理
1.配置接口权限
2.增加数据规则权限
- 创建接口角色
- 接口开发实现
- 接口测试
# 接口权限配置讲解
## 一、功能介绍
通过接口配置实现,对接口的访问权限控制和数据权限控制,
接口时REST接口,接口权限认证机制使用Json web token (JWT)
接口权限调用流程:
(1)通过接口用户的用户名密码,调用鉴权token接口获取接口用户的token
该token,2个小时内有效
(2)把获取的token作为参数,调用接口的时候,会根据token去鉴权
(3)鉴权通过,接口会根据接口定义的编码,检验是否有访问权限
有则可以继续访问,无则提示访问受限
(4)有访问权限,则获取接口的数据权限规则,根据授权的数据权限规则返回需要的数据
实现一个新的接口,无需关注token的鉴权机制,需要实现以下步骤:
(1)开发一个rest接口
(2)枚举类InterfaceEnum中定义接口编码
(3)调用InterfaceUtil工具类getInterfaceRuleDto获取接口权限,验证是否有访问权限,并获取数据权限
(4)根据获取的数据权限,组装查询条件返回接口数据
## 二、权限接口定义
开发一个接口rest接口,
```
public enum InterfaceEnum 类中定义接口编码
blacklist_list("blacklist_list", "黑名单分页查询", "/rest/tsBlackListController", "GET", 1)
blacklist_list 为接口编码
```
## 三、接口管理
### 1.配置接口权限
接口权限管理--接口权限录入,
![](https://img.kancloud.cn/0c/c1/0cc11db5d4458e0a5d64518b662b8b5c_1534x335.png)
接口添加:
![](https://img.kancloud.cn/eb/0a/eb0aebb8d3f8a096bce7935e2df2decb_903x714.png)
说明:
接口权限编码:该编码比较重要,每个接口一个编码,不能重复。该编码由开发者制定
(见接口权限开发,接口编码定义)
接口权限名称:定义名称
接口权限等级:一级权限,下级权限区分
父级接口:上下级关系维护(父子关系)
接口权限地址:接口请求地址
请求方式:GET、POST、PUT、DELETE
接口权限排序:树形列表展示的顺序
以上信息:接口权限编码字段比较重要,其他的字段与权限控制无关,只做说明使用
### 2.增加数据规则权限
![](https://img.kancloud.cn/8a/43/8a43af2535a665840a81f01e7ac7518e_1575x434.png)
![](https://img.kancloud.cn/40/ee/40eebedaa6f29a5ebe030c32ede048a1_904x553.png)
## 四、创建接口角色
(1)创建接口角色,进行角色授权,然后分配角色给接口用户
接口权限---接口角色管理 创建接口角色
![](https://img.kancloud.cn/25/25/25257fb55b9f5850fb4055c6aa244e25_1581x511.png)
![](https://img.kancloud.cn/1f/78/1f78685c87717753e0c920ac5a4428c3_1606x477.png)
## 五、接口开发实现
接口中增加业务逻辑:
(1)校验接口访问权限
```
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.blacklist_list);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
```
(2)接口权限规则注入
方案一:
查询器处理
```
CriteriaQuery cq = new CriteriaQuery(TsBlackListEntity.class, dataGrid);
InterfaceUtil.installCriteriaQuery(cq, interfaceRuleDto, InterfaceEnum.blacklist_list);
```
方案二:
Sql和hql 处理
```
String qlStr = InterfaceUtil.getQL(interfaceRuleDto, InterfaceEnum.blacklist_list);
```
把组装的qlStr 追加到查询语句中
## 六、接口测试
```
//获取token
public static String getToken(String userName,String password){
String url = "http://localhost:8888/jeecg-bpm/rest/tokens?username="+userName+"&password="+password;
String token= JwtHttpUtil.httpRequest(url, "POST", null);
return token;
}
```
```
//获取黑名单列表
public static JSONObject getBlackList(String token){
String url = "http://localhost:8888/jeecg-bpm/rest/tsBlackListController";
JSONObject resp= JwtHttpUtil.httpRequest(url, "GET", null,token);
return resp;
}
```
```
public static void main(String[] args) {
//接口角色授权的用户账号密码
String token = getToken("interfaceuser","123456");
//获取黑名单列表
System.out.println("======获取黑名单列表======="+getBlackList(token));
}
```
- 总体介绍
- 快速了解
- 平台优势
- 技术支持
- 社区荣誉
- 开发环境准备
- JEECG私服Maven
- 代码结构说明
- 入门开发环境搭建
- 开发工具
- 代码生成器使用
- GUI代码生成器
- Online代码生成器
- P3插件代码生成器
- 代码生成器配置
- 功能介绍
- 权限开发手册
- Online开发权限
- Online表单访问规则
- 列表按钮权限控制
- 列表数据权限控制
- 页面表单权限控制(一对多表)
- 页面表单权限控制(单表)
- 其他
- 二级管理员手册
- 接口权限配置
- 平台权限设计总览
- 编码开发方式
- 列表按钮权限用法
- 列表数据权限用法
- 数据权限自定义SQL
- 表单权限用法
- UI标签库文档
- AuthFilter(页面权限标签)
- Autocomplete(自动补全标签)
- BaseTag(样式和JS引入标签)
- Choose(弹出选择标签)
- ComboTree(下拉树形选择框)
- Datagrid(数据列表标签)
- DepartSelectTag(部门树选择标签)
- DictSelect(数据字典下拉选择框)
- FormValidation(表单提交及验证标签)
- HasPermissionTag(页面权限标签)
- Menu(左侧菜单生成标签)
- MutiLang(国际化标签)
- OrgSelectTag(部门树列表选择标签)
- SelectZTree(Ztree树控件)
- Tabs(选项卡父标签)
- TreeSelectTag树分类标签
- Upload(上传标签)
- UserSelectTag(用户选择标签)
- WebUploader(上传标签)
- 查询构造器
- 查询过滤器
- 高级查询构造器
- 专题功能介绍
- 国际化使用
- 多数据源使用
- 定时任务
- 平台JWT接口文档
- 消息中心
- Online在线开发
- Online二次开发
- Online代码生成
- Online唯一性校验配置
- Online查询机制(数据权限)
- Online树形表单配置
- Online表单填值规则
- Online表单对外接口
- Online表单控件
- Online表单配置
- Online表单高级应用
- Online报表开发
- Online图形报表配置
- Online数据报表配置
- Online移动报表配置
- 自定义表单设计
- 自定义表单权限
- 列表空间权限控制
- 功能介绍
- 常规控件权限控制
- 自定义表单配置
- 自定义表单二次开发
- 自定义表单控件
- 自定义表单数据源
- 自定义表单模板
- 自定义表单配置
- 自定义表单高级应用
- 表单数据维护
- 附录小技巧
- datagrid扩展属性用法
- Formvalid新增属性tiptype的使用
- JEECG单点集成文档
- Jeecg定时任务开发
- JEECG常见问题贴
- Redis与Ehcache切换文档
- Toolbar自定义js参数规则
- UI标签规则
- 列表多表头的设计
- 列表拓展字段展示
- 列表自定义查询条件
- 员工入职开发规范文档V1.0
- 数据列表合计功能
- 登录权限拦截器排除方法
- 组织机构导入功能使用说明
- 表单字段重复校验方法
- JEECG新技术
- 新版UI技术方案