1. 概述
1.1 版本
報表服務器版本 |
---|
10.0 |
1.2 功能簡介
權限細粒度控制是指針對模板内部的小處方面進行權限控制,比如說單元格内容數據,控件、隐藏行列、工具欄,sheet,圖表等等。
不同的角色用戶登錄系統,希望可操作的内容不一樣,比如說工具欄按鈕不一樣,模板預覽時,展示的單元格不一樣,填報數據時,對某些控件擁有的編輯權限不一樣,查看數據時,看到的數據不一樣。
2. 權限細粒度
FineReport 對權限細粒度的控制提供了 2 種不同的控制方式,一個是完全可視化的
,另外一個是根據 FineReport 提供的内置參數設置條件屬性來控制權限。2.1 權限編輯
打開設計器,點擊模板>進入權限編輯,即可在 中選擇角色,對 中的單元格、控件、工具欄、 sheet 等等内容在 設置權限,如下圖所示:
注1:角色面板中的角色列表自動加載平台系統中的角色,如果注冊文件中包含決策平台功能,那麽就顯示爲數據 數據決策系統 如果沒有注冊該功能,則顯示管理平台。
注2:FineReport 暫時只支持對模板工具欄、控件、單元格、懸浮元素、行列和多 sheet 這幾個方面進行細粒度權限控制。
注3:可視化權限編輯的詳細示例請查看權限細粒度之工具欄控制 和 權限細粒度之模板内容控制 。
2.2 參數權限控制
用戶認證後會将報表三個固定的默認參數$fine_username、$fine_role、$fine_position保存在 Session 中。
同時提供兩個函數GETUSERDEPARTMENTS()、GETUSERJOBTITLES()來分别獲取部門角色的部門和職位。
同一報表環境下,模板中就可以直接以參數的形式獲取到對應的值,然後在模板裏面進行篩選判斷就可以顯示不同數據及樣式。
$fine_username:獲取登錄系統的用戶名,比如說登錄用戶名爲 Anna,那麽$fine_username=Anna。
$fine_role:獲取登錄系統的角色,如果是超管用戶登錄,則$fine_role=superusers;如果是角色登錄,比如說角色數據架構師用戶登錄,$fine_role=數據架構師;如果是部門角色登錄,該參數爲空。
$fine_position:獲取部門職位,返回值爲一個由部門和職位組成的數組,比如說人力資源部長職位登錄系統,那麽$fine_position={"departments":"人力資源","jobTitle":"部長"};
GETUSERDEPARTMENTS():獲取部門職位裏面的部門,比如說人力資源部長職位登錄系統,那麽GETUSERDEPARTMENTS()=人力資源;
GETUSERJOBTITLES():獲取部門職位裏面的職位,比如說人力資源部長職位登錄系統,那麽GETUSERJOBTITLES()=部長。
注1:$fine_username、$fine_role、$fine_position 是 FineReport 默認的參數,所以調用時大小寫必須保持一緻。
詳細示例請查看 權限細粒度之參數控制
3.注意事項
3.1 注意事項一
問題描述:權限細粒度控制時,開啓同步數據集的時候,在設計器裏進行權限編輯 時已配置角色中出現了内置數據集裏的部門「技術支持總調度」和「技術支持一線技術支持」,但同步數據集裏的部門中并沒有這兩個部門,而且有關「技術支持」的角色部門在決策系統的用戶頁面裏搜索不到。
原因:demo 自帶的上報流程用到這兩個角色,因此在已配置角色裏默認顯示了這兩個角色,但不影響正常使用。
解決方案:在 FineReport 軟件中,點擊服務器>服務器配置,分别在「分頁預覽設置」,「填報頁面設置」,「數據分析設置」界面去掉「使用工具欄」前的對勾。具體情況如下所示:
由於上述步驟把工具欄清空,若想實現權限細粒度的工具欄控制,可點擊模板>模板Web屬性,添加模板所需要的工具。具體情況如下所示:
索引: