FineReport中自定義登錄界面的方法
FineReport報(bào)表軟件是一款純Java編寫的、集數(shù)據(jù)展示(報(bào)表)和數(shù)據(jù)錄入(表單)功能于一身的企業(yè)級(jí)web報(bào)表工具,它“專業(yè)、簡(jiǎn)捷、靈活”的特點(diǎn)和無(wú)碼理念,僅需簡(jiǎn)單的拖拽操作便可以設(shè)計(jì)復(fù)雜的中國(guó)式報(bào)表,搭建數(shù)據(jù)決策分析系統(tǒng)。
在登錄平臺(tái)時(shí),不希望使用FR默認(rèn)的內(nèi)置登錄界面,想通過(guò)自定義登錄界面實(shí)現(xiàn)登錄操作,內(nèi)置登錄界面如下圖:
登錄界面,獲取到用戶名和密碼的值,發(fā)送到報(bào)表系統(tǒng),報(bào)表服務(wù)帶著這兩個(gè)參數(shù)訪問(wèn)認(rèn)證地址進(jìn)行認(rèn)證。
自定義登錄界面
1)登錄界面設(shè)置
自定義html登錄頁(yè)面:命名為login.html,并保存在%FR_HOME%\WebReport下,代碼如下:
<span style="font-family:Microsoft YaHei;font-size:14px;"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js"></script> <script type="text/javascript"> function doSubmit() { var username = FR.cjkEncode(document.getElementById("username").value); //獲取輸入的用戶名 var password = FR.cjkEncode(document.getElementById("password").value); //獲取輸入的參數(shù) jQuery.ajax({ url:"http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso",//單點(diǎn)登錄的管理平臺(tái)報(bào)表服務(wù)器 dataType:"jsonp",//跨域采用jsonp方式 data:{"fr_username":username,"fr_password":password},//獲取用戶名密碼 jsonp:"callback", timeout:5000,//超時(shí)時(shí)間(單位:毫秒) success:function(data) { if (data.status === "success") { window.location=data.url;//認(rèn)證成功跳轉(zhuǎn)頁(yè)面,因?yàn)閍jax不支持重定向所有需要跳轉(zhuǎn)的設(shè)置 //登錄成功 } else if (data.status === "fail"){ alert("用戶名或密碼錯(cuò)誤");//登錄失?。ㄓ脩裘蛎艽a錯(cuò)誤) } }, error:function(){ alert("超時(shí)或服務(wù)器其他錯(cuò)誤");// 登錄失?。ǔ瑫r(shí)或服務(wù)器其他錯(cuò)誤) } }); } </script> </head> <body> <p>請(qǐng)登錄</p> <form name="login" method="POST"> <p> 用戶名: <input id="username" type="text" /> </p> <p> 密 碼: <input id="password" type="password" /> </p> <input type="button" value="登錄" onclick="doSubmit()"/> </form> </body> </html></span>
Dosubmit()是主要的邏輯判斷,實(shí)現(xiàn)的是將對(duì)應(yīng)的值傳給報(bào)表服務(wù)的邏輯實(shí)現(xiàn)過(guò)程。
調(diào)用登錄界面
登錄系統(tǒng),選擇管理系統(tǒng)>外觀配置,在登錄頁(yè)選項(xiàng)中選擇設(shè)置登錄網(wǎng)頁(yè),并輸入自定義登錄頁(yè)面的路徑:login.html,如下圖所示:
總結(jié)
比如說(shuō)若用戶有自己的系統(tǒng),將FR繼承到自己已有系統(tǒng)中,該系統(tǒng)有自己的登錄界面,希望登錄自己系統(tǒng)的同時(shí)也登錄報(bào)表(即將輸入的用戶名密碼也發(fā)送到報(bào)表服務(wù)進(jìn)行認(rèn)證),從而訪問(wèn)報(bào)表時(shí)不需要再次登錄即單點(diǎn)登錄,步驟如下:
1、找到您系統(tǒng)登錄頁(yè)面如login.jsp;
2、在login.jsp頁(yè)面head中引入finereport.js;
3、在login.jsp頁(yè)面JavaScript中定義function如dosubmit,在dosubmit中獲取到輸入的用戶名密碼,并通過(guò)iframe方式或者ajax方式進(jìn)行認(rèn)證。
4、在FineReport平臺(tái)系統(tǒng)中設(shè)置自定義登錄頁(yè)面地址為您系統(tǒng)的登錄地址。
若是OA系統(tǒng)或者報(bào)表系統(tǒng)和項(xiàng)目系統(tǒng)不再同一個(gè)服務(wù)器上,可以進(jìn)行ajax跨域異步單點(diǎn)登錄。
Session傳值
對(duì)于Java系統(tǒng)來(lái)說(shuō),可將用戶名與密碼放在session中,把報(bào)表集成在同一環(huán)境下面,報(bào)表可自動(dòng)獲取到用戶名和密碼的值進(jìn)行驗(yàn)證。
還原默認(rèn)登錄界面
如果在決策系統(tǒng)修改了登錄界面后,希望還原成系統(tǒng)默認(rèn)登錄界面,應(yīng)該如何實(shí)現(xiàn)呢?
1)打開安裝目錄%FR_HOME%\WebReport\WEB-INF\resources,找到fsconfig.xml
2)刪除loginUrl屬性
右擊fsconfig.xml文件,選擇編輯器打開,刪除文件中的loginUrl屬性,如下,刪除login.htm:
此時(shí)請(qǐng)務(wù)必關(guān)閉設(shè)計(jì)器,重新開啟,再次進(jìn)入數(shù)據(jù)決策系統(tǒng),即可回到默認(rèn)的登錄界面。
還原到默認(rèn)的登錄界面后,如果再需要設(shè)置登錄界面,可以用管理員賬戶登錄,進(jìn)行設(shè)置即可。
以上所述是小編給大家介紹的FineReport中自定義登錄界面的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)
這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測(cè)試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細(xì),匯總了idea各個(gè)版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧2022-09-09springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例
這篇文章主要介紹了springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例,從源碼角度分析下多級(jí)緩存實(shí)現(xiàn)原理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
這篇文章主要介紹了java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06