wuxiren123

          FineReport中如何自定義登錄界面

          在登錄平臺時,不希望使用FR默認的內置登錄界面,想通過自定義登錄界面實現登錄操作,內置登錄界面如下圖:



           

          登錄界面,獲取到用戶名和密碼的值,發送到報表系統,報表服務帶著這兩個參數訪問認證地址進行認證。

          自定義登錄界面

          登錄界面設置

          自定義html登錄頁面:命名為login.html,并保存在%FR_HOME%\WebReport下,代碼如下:

          <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);  //獲取輸入的參數  
              jQuery.ajax({  
               url:
          "http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso",//單點登錄的管理平臺報表服務器  
               dataType:"jsonp",//跨域采用jsonp方式  
               data:{"fr_username":username,"fr_password":password},//獲取用戶名密碼  
               jsonp:"callback",  
               timeout:
          5000,//超時時間(單位:毫秒)  
               success:function(data) {  
                      
          if (data.status === "success"
              window.location
          =data.url;//認證成功跳轉頁面,因為ajax不支持重定向所有需要跳轉的設置 
                            //登錄成功     
                      }
           else if (data.status === "fail"){  
                           alert(
          "用戶名或密碼錯誤");//登錄失敗(用戶名或密碼錯誤)  
                      }
            
               }
          ,  
               error:
          function(){  
                     alert(
          "超時或服務器其他錯誤");// 登錄失敗(超時或服務器其他錯誤)  
               }
            
          }
          ); 
          }
            
          </script>  
          </head>  
          <body>  
          <p>請登錄</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>

           Dosubmit()是主要的邏輯判斷,實現的是將對應的值傳給報表服務的邏輯實現過程。

          調用登錄界面

          登錄系統,選擇管理系統>外觀配置,在登錄頁選項中選擇設置登錄網頁,并輸入自定義登錄頁面的路徑:login.html,如下圖所示:



           

          總結

          比如說若用戶有自己的系統,將FR繼承到自己已有系統中,該系統有自己的登錄界面,希望登錄自己系統的同時也登錄報表(即將輸入的用戶名密碼也發送到報表服務進行認證),從而訪問報表時不需要再次登錄即單點登錄,步驟如下:

          1、找到您系統登錄頁面如login.jsp;

          2、在login.jsp頁面head中引入finereport.js;

          3、在login.jsp頁面JavaScript中定義function如dosubmit,在dosubmit中獲取到輸入的用戶名密碼,并通過iframe方式或者ajax方式進行認證。

          4、在FineReport平臺系統中設置自定義登錄頁面地址為您系統的登錄地址。

          若是OA系統或者報表系統和項目系統不再同一個服務器上,可以進行ajax跨域異步單點登錄。

          Session傳值

          對于java系統來說,可將用戶名與密碼放在session中,把報表集成在同一環境下面,報表可自動獲取到用戶名和密碼的值進行驗證。

          還原默認登錄界面

          如果在決策系統修改了登錄界面后,希望還原成系統默認登錄界面,應該如何實現呢?

          1)打開安裝目錄%FR_HOME%\WebReport\WEB-INF\resources,找到fsconfig.xml



           

          2)刪除loginUrl屬性

          右擊fsconfig.xml文件,選擇編輯器打開,刪除文件中的loginUrl屬性,如下,刪除login.htm:



           

          此時請務必關閉設計器,重新開啟,再次進入數據決策系統,即可回到默認的登錄界面。

          還原到默認的登錄界面后,如果再需要設置登錄界面,可以用管理員賬戶登錄,進行設置即可。

          posted on 2017-03-21 16:58 喝水居然長肉 閱讀(118) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 会同县| 绍兴县| 永德县| 抚州市| 青神县| 山阳县| 登封市| 怀来县| 醴陵市| 永年县| 弋阳县| 桂东县| 武威市| 平和县| 洛扎县| 渭南市| 苏尼特左旗| 米林县| 罗定市| 资源县| 太仓市| 盘锦市| 固原市| 新竹市| 慈利县| 安新县| 台东市| 兴仁县| 溧阳市| 甘德县| 彭水| 望江县| 台北市| 陆良县| 漳平市| 永善县| 新源县| 新野县| 中宁县| 棋牌| 武义县|