反饋已提交
網絡繁忙
沒有購買 FR 資料決策系統功能的使用者,可以通過範本認證來控制使用者查看報表的權限。
使用者可根據實際情況來選擇不同的控制模式。
預設不需要驗證,所有使用者(包括未登入使用者)都可以查看所有報表範本。
點擊左上角的【】按鈕,展開範本認證設定項。
預設不開啟狀態,設定項均為灰色,除範本認證開啟按鈕,其餘設定項均不可點擊。
點擊範認證後的按鈕,開啟認證,其餘設定項均可點擊。
點擊【選擇】按鈕,顯示當前工程下的所有範本。
範本名稱後的鎖標誌開著則需要認證,預設選擇範本介面的所有範本需要認證。
點擊一下該標誌,改為鎖定後,表示範本無需認證。
父目錄鎖定後,子目錄中的範本均會被鎖定。
可在上方搜尋框中輸入範本名稱查詢需要設定的範本,帶有搜尋框中關鍵字名稱的範本都會被搜尋出來。
點擊【完成】按鈕,儲存設定。
選擇【僅認證使用者密碼】,則使用者在輸入報表系統設定的帳號和密碼後,若登入成功,則可以查看報表,登入失敗,則無法查看報表。
帳號密碼為報表系統的帳號密碼,而不是使用者自己系統的帳號密碼。
適用於使用者系統小,人員少,對權限分配沒有什麼需求,只需要讓擁有系統帳號的使用者查看。
確定設定後顯示需要認證的範本,分頁預覽GettingStartedTW.cpt,輸入平台使用者的帳號,登入後即可查看報表。
選擇【角色權限控制認證】,管理員可以通過使用者的角色來給不同角色配置不同的範本訪問權限。
適用於系統比較大,人員比較多,範本不是很多的場景。
點擊【儲存】,顯示權限分配頁面,展示平台使用者管理中設定的所有部門、角色和使用者。
權限分配可以對部門、角色或使用者單獨進行設定,使用者可根據部門進行初步篩選,縮小使用者範圍。
選擇需要設定權限的部門或角色或使用者後,對右側需要認證的範本列表進行查看和填報權限的分配。
預設範本全部鎖上,無權限訪問,即認證通過後依舊無查看或編輯權限,滑鼠點擊需要設定認證的範本後的鎖標誌,開啟權限,認證通過後即擁有範本查看或編輯權限。
選擇使用者Lily,設定範本GettingStartedTW.cpt有查看權限,沒有填報權限。
分頁預覽GettingStartedTW.cpt,輸入Lily的帳號,可以登入查看。
分頁預覽GettingStartedTW.cpt,輸入Lisa的帳號,登入後無權限查看報表。
填報預覽GettingStartedTW.cpt,輸入Lily的帳號,登入後無權限查看報表。
平台會根據簽名來進行數位簽名認證的判斷,通過認證,顯示範本,通不過認證,顯示無權限。
訪問範本 /view/report?viewlet=***.cpt 的時候,需要在訪問的 URL 的 QueryString 或者是請求頭中,攜帶有認證伺服器認證通過的簽名,參數名為 fine_digital_signature,URL 格式為:/view/report?viewlet=GettingStarted.cpt&fine_digital_signature=值。
選擇【數位簽名認證】後,需要自訂數位簽名密鑰,用於編譯獲取fine_digital_signature的值。
點擊【儲存】,完成設定。
編譯依賴於 fine-core-10.0.jar,以及 fine-third-10.0.jar 包。
path為範本所在相對路徑,key為平台設定的數簽名密鑰。
import com.fr.cert.token.JwtBuilder; import com.fr.cert.token.Jwts; import com.fr.cert.token.SignatureAlgorithm; import java.util.Date; public class Test2 { public static void main(String[] args) { //數位簽名有效時長 long validTime = 30 * 60 * 1000; //數位簽名內容,以訪問資源的相對路徑作為內容 String path = "GettingStartedTW.cpt"; String key = "123456"; //數位簽名密鑰,可以自訂 //生成fine_digital_signature String fine_digital_signature = createJwt("", "", path, validTime, key); //輸出fine_digital_signature System.out.println(fine_digital_signature); } private static String createJwt(String issuer, String id, String subject, long validTime, String key) { //用於生成數位簽名,即參數fine_digital_signature的值 SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; Date currentTime = new Date(); Date expirationTime = new Date(currentTime.getTime() + validTime); JwtBuilder builder = Jwts.builder() .setIssuer(issuer) .setSubject(subject) .setIssuedAt(currentTime) .setExpiration(expirationTime) .setId(id) .signWith(signatureAlgorithm, key); return builder.compact(); } }
分頁預覽GettingStartedTW.cpt,顯示無權限查看報表。
在URL後輸入&fine_digital_signature=值,重新整理預覽,可以查看報表。
2020-08-03 及之後的 JAR ,FineReport 設計器【切換工作區間】到開啟數位簽名認證的遠端伺服器,可直接預覽範本,無需在URL後輸入&fine_digital_signature=值。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉