JEECG平台權限設計
一、權限的設計概念
JEECG封裝了完善的用戶權限模塊,支持菜單權限,列表權限,表單權限,數據權限。數據權限功能已實現極致: 支持行級、列級、字段級控制,實現不同人看不同數據,不同人對同一個頁面操作不同字段。系統按鈕權限和表單權限原來是正控制,只有授權的人才有權限,未授權看不到對應按鈕;(admin擁有超級權限,不受控制)
用戶權限模塊:指用戶信息及用戶權限信息數據。一個用戶可以分配多個角色;也可以隸屬於多個組織結構;多個組織機構情況下,登錄需要選擇機構登錄,方便數據權限控制。多個組織登錄情況如下:
管理員可以對用戶進行管理,如果用戶已經失效可以直接凍結該用戶禁止其登錄,新開的用戶需要激活后才能登錄
二、權限的對象
JEECG權限設計,采用用戶、角色、菜單、組織機構來進行組建,角色為主要授權對象,組織機構可以分配角色。 菜單類型分兩種:權限類型和菜單類型
- 菜單類型: 菜單類型的菜單,在首頁菜單展示和訪問使用
- 權限類型: 權限類型的菜單,在首頁菜單不做展示,只做權限控制使用
1.用戶管理
用戶管理,用戶可以分配多個角色;也可以隸屬於多個組織機構,多個組織機構情況下,登錄需要選擇機構登錄,方便數據權限控制;
2.角色管理
角色是權限組單位,通過角色管理菜單權限。
3.菜單管理
菜單管理,用來做首頁菜單管理和權限管理,權限包括:菜單訪問權限、按鈕權限、表單權限、數據權限。
4.組織機構管理
組織機構管理,支持集團模式多個分公司,第一級默認是公司類型,從二級開始可設置部門和崗位,部門和崗位通過類型區分;組織機構可以單獨設置角色;
三、數據權限規則
一、功能說明
列表數據權限,主要通過數據權限控制行數據,讓不同的人有不同的查看數據規則; 比如: 銷售人員只能看自己的數據;銷售經理可以看所有下級銷售人員的數據;財務只看金額大於5000的數據等等;
二、數據權限分兩大類型
序號 | 類型 | 規則字段區別 | 說明 |
---|---|---|---|
1 | 編碼方式 | 規則字段是駝峰寫法,對應hibernate實體的字段 | 編碼模式(通過代碼生成器生成代碼) |
2 | Online方式 | 規則字段是下划線寫法,對應表的字段 | Online模式(在線表單模式,無代碼) |
三、數據權限規則篇
1.當前用戶上下文變量
注意:數據權限配置,規則值可以填寫系統上下文變量(當前登錄人信息),從而根據當前登錄人信息進行權限控制。
編碼 | 描述 |
---|---|
sys_user_code | 當前登錄用戶登錄賬號 |
sys_user_name | 當前登錄用戶真實名稱 |
sys_date | 當前系統日期 |
sys_time | 當前系統時間 |
sys_company_code | 當前登錄用戶公司編號 |
sys_org_code | 當前登錄用戶部門編號 |
規則值,配置寫法如下:#{sys_user_code}
四、如何生成代碼
首先登錄網站===>在線開發===>Online表單開發===>創建表單
創建表單后需要先同步到數據庫,然后點擊代碼生成 。可以根據彈出的對話框選擇代碼生成的存放位置。然后copy到項目中。
另外一種生成方案是使用Java中的GUI生成代碼。『官方建議使用Online生成』。直接run As test包下的JeecgOneGUI.java 文件然后彈出錄入界面
如果是基礎功能不建議選擇生成代碼。直接在線生成就可以,如果有需要做開發API接口給前台使用的則需要生成代碼放到項目中以便增加注解【API采用Swagger】,只有在方法上加入
@ApiOperation
注解才能在Swagger中顯示。
五、功能測試
創建表單后並且同步到數據庫后可以在表單后面看到一個***功能測試***按鈕。點擊功能測試按鈕看到的界面就是我們需要的生成的界面,創建表的時候風格一般都是默認不做選擇
六、具體的數據權限控制
1.按鈕權限規則控制
列表按鈕權限控制,主要是控制列表上按鈕、操作鏈接的隱藏;按鈕權限配置后,默認未授權用戶都看不到,具體配置在菜單中配置如圖
頁面控件編碼
operationCode
:<t:dgToolBar title="填報日志" icon="icon-add" url="tBussDailyLogController.do?goAdd" operationCode="#db_generate_input" funname="add"></t:dgToolBar> <t:dgToolBar title="日志點評" icon="icon-edit" url="tBussDailyLogController.do?goUpdate" operationCode="#db_generate_form" funname="update"></t:dgToolBar> <t:dgToolBar title="查看" icon="icon-search" url="tBussDailyLogController.do?goUpdate" funname="detail"></t:dgToolBar>
頁面控件編碼可以自定義,把定義好的編碼填寫到 【菜單欄目的】-【頁面控件】
填寫完畢后點擊【角色管理】可以根據角色來選擇是否隱藏按鈕【隱藏不大勾,打勾不隱藏】
2.列表數據權限用法
數據權限菜單的配置
創建數據權限類型菜單(注意:列表訪問鏈接和數據請求鏈接不是一個,此為加載數據請求) 注意: 這里很容易配置錯誤,一定注意【datagrid針對列表數據控制?后面要跟datagrid】 用戶數據請求地址:userController.do?datagrid
列數據權限控制
如果想隱藏某一列的值,不想讓某類用戶看到該列的值可以使用如下方法
請看操作步驟
然后給角色分配權限
使用角色為 經理的用戶進行登錄看到的效果如下:
然后給經理角色【頁面權限規則】 工作日志字段隱藏 打勾
打勾完畢后,再次使用角色為 經理的用戶進行登錄看到的效果如下:
如果只想讓登錄用戶只能看到自己的數據可以進行如下操作
首先需要在菜單欄目中進行設置
設置完畢后進入角色管理,給角色分配權限
使用員工角色登錄然后查看顯示效果如下
再次給員工角色分配權限,打上勾
然后再次使用員工角色登錄然后查看顯示效果如下