1. 概述
1.1 版本
報表服務器版本 | JAR | 功能變動 |
---|---|---|
10.0 | - | - |
10.0 | 2019-12-05 | 「郵箱」支持包含符号#和& |
10.0 | 2020-06-08 | 新增用戶可編輯選項,勾選後,同步狀态下用戶信息可編輯 勾選後,同步用戶可編輯姓名、密碼、手機、郵箱,可使用 忘記密碼 功能。已存在用戶的以上字段在定期同步時将不再更新 詳情請參見本文 4.2 節 |
10.0.10 | 2020-11-02 | 支持多源用戶,在添加/導入用戶存在狀态下可「同步用戶」,平台多種類型用戶可并存 |
10.0.11 | 2020-12-02 | 定時同步頻率支持使用表達式 |
10.0.12 | 2020-12-28 | 支持使用「文件數據集」同步用戶 用戶手機号支持綁定中國大陸、中國台灣、中國香港、土耳其、韓國、日本、新加坡、馬來西亞手機号 |
1.2 應用場景
一個企業的職工人數是相當多的,并且由於人員的流動性,用戶信息一直在變化,如果每次都通過手動添加修改,工作量将會非常大。
FineReport 用戶同步數據集功能可以實現動态更新平台中的用戶信息,使之随着數據庫中的用戶信息一起變化。
1.3 功能簡介
管理員可以先創建服務器數據集,設置定期從數據集同步用戶,保持用戶信息及時更新。
2. 準備用戶數據
同步的用戶數據來自服務器數據集,支持用戶部門有層級和無層級兩種。
用戶可根據自身用戶結構選擇其中一種。
2.1 部門職務間無層級結構-SQL 數據集
本節示例所用的用戶信息表部門職務間無層級結構,如下圖所示:
2.1.1 準備用戶信息表
準備一張用戶信息表,表結構如下圖所示:
點擊下載用戶信息表:導入用戶1.xlsx
注1:導入用戶時,用戶名、姓名、密碼爲必填項,此外内容可以不填。
注2:10.0.12 之前的報表工程版本,僅支持綁定中國大陸手機号,手機号無需加區号
10.0.12 及之後的報表工程版本,用戶手機号支持綁定中國大陸、中國台灣、中國香港、土耳其、韓國、日本、新加坡、馬來西亞手機号
中國大陸手機号可自行選擇是否加區号,其他地區手機号需要加區号。
2.1.2 創建服務器數據集
使用 Navicat 等第三方工具,将上表導入數據庫,并建立系統與該數據庫的 數據連接 。下文将以 FRDemo 數據庫爲例。
管理員登錄數據決策系統,點擊「管理系統>數據連接>服務器數據集」,創建「SQL數據集」。如下圖所示:
設置數據集名稱爲「同步用戶1」,數據連接選擇「FRDemo」,SQL 語句爲:
select * from 導入用戶1
2.2 部門職務間無層級結構-文件數據集
注:10.0.12 及之後的報表工程,支持通過「文件數據集」同步用戶。
本節示例所用的用戶信息表部門職務間無層級結構。同步的用戶的部門都是并列在「所有部門」下,如下圖所示:
2.2.1 準備用戶信息表
準備一張用戶信息表,表結構如下圖所示:
點擊下載用戶信息表:導入用戶1.xlsx
注1:導入用戶時,用戶名、姓名、密碼爲必填項,此外内容可以不填。
注2:10.0.12 之前的報表工程版本,僅支持綁定中國大陸手機号,手機号無需加區号
10.0.12 及之後的報表工程版本,用戶手機号支持綁定中國大陸、中國台灣、中國香港、土耳其、韓國、日本、新加坡、馬來西亞手機号
中國大陸手機号可自行選擇是否加區号,其他地區手機号需要加區号。
注3:也可使用 TXT / XML 文件,設置方式請參見:文件數據集 。
2.2.2 創建服務器數據集
将該表保存在本地,或者上傳至報表工程的%FR_HOME%\webapps\webroot\WEB-INF\reportlets目錄下。
管理員登錄數據決策系統,點擊「管理系統>數據連接>服務器數據集」,創建「文件數據集」。如下圖所示:
設置數據集名稱爲「同步用戶-文件」,選擇上文準備的表格。
注1:若選擇服務器文件,則選擇報表工程的 %FR_HOME%\webapps\webroot\WEB-INF\reportlets 目錄下的文件。
若選擇本地文件,上傳後文件自動保存至報表工程的 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\excel 目錄下。
注2:也可使用 TXT / XML / 遠程 URL 文件,支持數據集參數,設置方式請參見:文件數據集 。
2.3 部門職務間有層級結構-樹數據集
本節示例所用的用戶信息表部門職務間有層級結構,如下圖所示:
2.3.1 準備用戶信息表
準備一張用戶信息表,表結構如下圖所示:
點擊下載用戶信息表:部門職務間有層級結構.xls
注1:同步用戶數據集時,若服務器數據集爲樹數據集 ,頂層機構的父機構應爲空值。如下圖所示的 Anna 用戶,fid 字段爲空。
注2:10.0.12 之前的報表工程版本,僅支持綁定中國大陸手機号,手機号無需加區号
10.0.12 及之後的報表工程版本,用戶手機号支持綁定中國大陸、中國台灣、中國香港、土耳其、韓國、日本、新加坡、馬來西亞手機号
中國大陸手機号可自行選擇是否加區号,其他地區手機号需要加區号。
2.3.2 創建SQL數據集
使用 Navicat 等第三方工具,将上表導入數據庫,并建立系統與該數據庫的 數據連接 。下文将以 FRDemo 數據庫爲例。
管理員登錄數據決策系統,點擊「管理系統>數據連接>服務器數據集」,創建「SQL數據集」。如下圖所示:
設置數據集名稱爲「同步用戶2」,數據連接選擇「FRDemo」,SQL 語句爲:
select * from 部門職務間有層級結構
2.3.3 創建樹數據集
管理員登錄數據決策系統,點擊「管理系統>數據連接>服務器數據集」,創建「樹數據集」。如下圖所示:
設置數據集名稱爲「同步用戶-有層級」,構建自數據集「同步用戶2」,原始标記字段爲「did」,父标記字段爲「fid」,如下圖所示:
3. 首次同步用戶更新設置
JAR 包版本在 2020-11-02 之前的工程,同步的用戶與「手動添加/導入的用戶」不可并存。
JAR 包版本在 2020-11-02 及之後的工程,同步的用戶與「手動添加/導入的用戶」可并存。
3.1 JAR 包版本在 2020-11-02 之前
管理員登錄數據決策系統,點擊「管理系統>用戶管理>所有用戶」,點擊「同步用戶」。
跳出「用戶更新設置」提示框,如下圖所示:
不同選擇對應的更新邏輯如下:
選擇 | 定義 |
---|---|
僅更新現有用戶基本信息,不改變權限等設置 | 如果現有用戶不在同步的服務器數據集中,該用戶會被删除 如果現有用戶在服務器數據集中(用戶名相同):
|
清空現有用戶信息及權限等設置,重新寫入 | 平台現有「手動添加/導入的用戶」的用戶名、姓名、密碼、手機、郵箱、部門、職務、角色、權限均被删除,重新同步用戶 服務器數據集中不存在、平台現有的角色仍然保留 |
3.2 JAR 包版本在 2020-11-02 及之後
管理員登錄數據決策系統,點擊「管理系統>用戶管理>所有用戶」,點擊「同步用戶」。
跳出提示框「是否保留現有非同步數據,包括導入/添加的用戶、部門職務、角色」,如下圖所示:
不同選擇對應的更新邏輯如下:
選擇 | 定義 |
---|---|
保留 | 如果現有用戶不在同步的服務器數據集中,該用戶信息和權限将被保留,不修改 如果現有用戶在服務器數據集中(用戶名相同):
|
清空 | 平台現有「手動添加/導入的用戶」的用戶名、姓名、密碼、手機、郵箱、部門、職務、角色、權限均被删除,重新同步用戶 |
4. 配置同步用戶
配置同步數據集信息,如下圖所示:
4.1 同步頻率
版本在 10.0.11 之前的工程,支持簡單重複執行同步用戶操作。
版本在 10.0.11 及之後的工程,支持通過兩種方式執行同步用戶操作:簡單重複執行、表達式設置。
4.1.1 簡單重複執行
從服務器數據集中自動同步用戶的間隔時間,默認爲 43200 秒。
同步用戶設置了同步頻率,可自動進行多次同步,到達設定頻率後自動進行同步,不斷把服務器數據集中變化的數據同步到平台。
注:同步頻率不宜過高,否則會導緻後台日志不斷刷新,日志體積無限膨脹。
4.1.2 表達式設置
支持通過 Cron 表達式設置任務執行的時間點,該任務可以是每天重複執行,隔日重複執行或者是單次執行等等各種不同組合的觸發時間點。
Cron 表達式的語法和寫法請參見:Cron 表達式
4.2 用戶可編輯
2020-06-08 及之後的 JAR 新增「用戶可編輯」按鈕,該按鈕默認不勾選,勾選後,同步狀态下用戶信息可編輯。
用戶可編輯姓名、密碼、手機、郵箱,可使用 忘記密碼 功能,已存在用戶的以上字段在定期同步時将不再更新。具體功能如下表所示:
注:JAR 包版本在 2020-06-08 到 2020-11-02 之間的系統,用戶同步後,除 忘記密碼功能 可使用外,密碼策略功能 對同步用戶不生效。
JAR 包版本在 2020-11-02 及之後的系統,密碼策略功能 對同步用戶生效。
用戶身份 | 說明 |
---|---|
超級管理員 | 1)再次同步時,平台現存用戶的姓名、密碼、手機、郵箱字段将不再更新 2)可編輯平台現存用戶的姓名、手機、郵箱、密碼,不可編輯角色 3)超管可在「賬号設置」處編輯姓名、密碼、手機、郵箱 4)可在登錄頁使用 忘記密碼 功能 |
次級管理員 | 1)可修改有權限用戶的姓名、手機、郵箱、密碼,不可編輯角色 2)可在登錄頁使用 忘記密碼 功能 3)次管可在「賬号設置」處編輯姓名、密碼、手機、郵箱 |
普通用戶 | 1)同步用戶可在「賬号設置」處編輯姓名、密碼、手機、郵箱 2)可在登錄頁使用 忘記密碼 功能 |
4.3 服務器數據集
選擇用戶信息對應的服務器數據集。
同步用戶的來源只能是當前同步的這個服務器數據集,不支持從多個服務器數據集中同時同步。切換服務器數據集後,清空之前同步信息。
同步成功後,不支持修改同步用戶所屬同步部門職務、同步角色信息,只能在服務器數據集中修改
4.4 用戶重複驗證字段
「重複驗證字段」包含兩種驗證方式:名稱和 ID 。
1)用戶信息保存位置
注:用戶信息保存在 FineDB 數據庫的表 中。
字段信息 | 所在表 |
---|---|
用戶名、用戶ID | fine_user |
職務名稱、職務ID | fine_post |
部門名稱、部門ID | fine_department |
角色名稱、角色ID | fine_custom_role |
2)具體說明
重複驗證字段 | 邏輯 | 場景 | 備注 |
---|---|---|---|
用戶名 | 若選擇名稱,則同步「名稱」字段,所在表中的 ID 字段值将由系統随機生成 | 如果修改數據集中某用戶的用戶名,平台中用戶名也會跟着修改,所對應用戶 ID 由系統随機生成,新用戶名的用戶會丢失之前單獨爲該用戶配置的權限。同理,部門,職位,角色則會丢失繼承自部門/職務/角色的權限 | 若重複驗證字段選擇職務名稱,那麽數據源中名稱相同但 ID 不同的職務會作爲一個職務看待,若同一部門下有兩個名稱爲「财務」的不同職務,會直接顯示爲同一個職務,其下用戶也會合并顯示 但如果兩個「财務」屬於不同部門,則雖算作一個職務,但因部門-職務關系的不同,其下用戶不會合并在一起顯示。用戶,部門,角色同理 |
部門名稱 | |||
職務名稱 | |||
角色名稱 | |||
用戶ID | 若選擇 ID,則同步「ID+名稱」字段,所在表中的 ID 字段值爲同步用戶時服務器數據集中的 ID | 如果數據集中某 ID 對應的用戶名發生修改,平台中用戶名也會跟着修改,權限也會被繼承。部門,職位,角色同理 | 非樹數據集中,若重複驗證字段選擇 ID ,那麽職務的 ID 、名稱都必須是一對一且唯一不重複的關系,同一 ID 對應多個名稱 、同一名稱對應多個 ID 都不允許。用戶,部門,角色同理 樹數據集中,用戶、職務、角色的名稱與 ID 必須是一對一且唯一不重複的關系 注:前台看不到職務ID,只通過職務名稱來區分、配置權限等。如果出現同一部門下兩個不同id職務同名的情況,将無法區分和配置權限。故直接要求兩者都必須唯一 且 一一對應的關系,不滿足則直接同步失敗 |
部門ID | |||
職務ID | |||
角色ID |
4.5 字段名稱
用戶名、姓名、密碼、部門名稱、職務名稱、角色名稱、手機、郵箱爲對應服務器數據集中的字段名稱。
注:2019-12-05 及之後的 JAR ,郵箱支持包含符号‘#’和‘&’。
4.6 加密方式
有兩種加密方式,「内置 SHA 加密」和「自定義密碼加密」。
1)内置 SHA 加密
适用場景:同步的服務器數據集中的密碼爲明文時,選擇内置 SHA 加密
加密簡介:數據決策系統采用 SHA256 加密方式,以保證密碼安全。用戶通過接口自定義修改密碼後,會自動進行 SHA256 加密。
登錄密碼:登錄密碼即爲本文 2.1 節用戶信息表中的密碼,非 fine_user用戶表 中加密的密碼。
2)自定義密碼加密
适用場景:同步的服務器數據集中的密碼爲自定義加密後的密文,則必須使用自定義加密。
加密簡介:自定義密碼加密,即自定義一個密碼加密類。
加密方式在類中描述,并保存在%BI_Home%\webapps\webroot\WEB-INF\classes文件夾中。
數據決策系統會在用戶自定義加密算法的基礎上再進行 SHA256 二次加密,以保證密碼安全。
登錄密碼:登錄密碼爲服務器數據集的密文解密之後的明文
注1:自定義加密示例詳情參見:簡單權限之密碼加密 。
注2:自定義加密算法,必須繼承 AbstractPasswordValidator 類,并加上返回判斷明文密碼和密文密碼是否一緻結果方法才可行。
注3:若勾選了「用戶可編輯」,且設置了加密方式,保存成功後,再次更換加密方式,FineDB 中的密文無法同步更換,用戶将無法成功登錄。
5. 同步用戶管理
同步完成後,同步用戶管理按鈕處,會新增兩個下拉選項,如下圖所示:
立即同步:點擊後立即進行一次用戶數據集同步。
編輯:打開同步用戶對話框,可修改同步用戶數據集配置。
若未開啓 4.2 節「用戶可編輯」設置,支持管理員「禁用用戶」,不支持「編輯用戶」和「删除用戶」。
若開啓了 4.2 節「用戶可編輯」設置,支持管理員「禁用用戶」和「編輯用戶」,不支持「删除用戶」。
注:禁用、編輯、删除用戶的操作,請參見 添加用戶 第 3、4、5 章