接口權限配置
===
**目錄索引:**
- 功能介紹
- 權限接口定義
- 接口管理
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.配置接口權限
接口權限管理--接口權限錄入,

接口添加:

說明:
接口權限編碼:該編碼比較重要,每個接口一個編碼,不能重復。該編碼由開發者制定
(見接口權限開發,接口編碼定義)
接口權限名稱:定義名稱
接口權限等級:一級權限,下級權限區分
父級接口:上下級關系維護(父子關系)
接口權限地址:接口請求地址
請求方式:GET、POST、PUT、DELETE
接口權限排序:樹形列表展示的順序
以上信息:接口權限編碼字段比較重要,其他的字段與權限控制無關,只做說明使用
### 2.增加數據規則權限


## 四、創建接口角色
(1)創建接口角色,進行角色授權,然后分配角色給接口用戶
接口權限---接口角色管理 創建接口角色


## 五、接口開發實現
接口中增加業務邏輯:
(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技術方案