Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198411
  • 博文数量: 97
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1024
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-03 09:03
文章分类
文章存档

2017年(17)

2016年(54)

2015年(25)

2014年(1)

我的朋友

分类: Web开发

2017-03-21 16:39:40

在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图:



 

登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证。

自定义登录界面

登录界面设置

自定义html登录页面:命名为login.html,并保存在%FR_HOME%\WebReport下,代码如下:

点击(此处)折叠或打开

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js"></script>
  5. <script type="text/javascript">
  6. function doSubmit() {
  7.     var username = FR.cjkEncode(document.getElementById("username").value); //获取输入的用户名
  8.     var password = FR.cjkEncode(document.getElementById("password").value); //获取输入的参数
  9.     jQuery.ajax({
  10.      url:"",//单点登录的管理平台报表服务器
  11.      dataType:"jsonp",//跨域采用jsonp方式
  12.      data:{"fr_username":username,"fr_password":password},//获取用户名密码
  13.      jsonp:"callback",
  14.      timeout:5000,//超时时间(单位:毫秒)
  15.      success:function(data) {
  16.             if (data.status === "success") {
  17.     window.location=data.url;//认证成功跳转页面,因为ajax不支持重定向所有需要跳转的设置
  18.                   //登录成功
  19.             } else if (data.status === "fail"){
  20.                  alert("用户名或密码错误");//登录失败(用户名或密码错误)
  21.             }
  22.      },
  23.      error:function(){
  24.            alert("超时或服务器其他错误");// 登录失败(超时或服务器其他错误)
  25.      }
  26. });
  27. }
  28. </script>
  29. </head>
  30. <body>
  31. <p>请登录</p>
  32. <form name="login" method="POST">
  33.     <p>
  34.         用户名:
  35.         <input id="username" type="text" />
  36.     </p>
  37.     <p>
  38.         密 码:
  39.         <input id="password" type="password" />
  40.     </p>
  41.     <input type="button" value="登录" onclick="doSubmit()"/>
  42. </form>
  43. </body>
  44. </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:



 

此时请务必关闭设计器,重新开启,再次进入数据决策系统,即可回到默认的登录界面。

还原到默认的登录界面后,如果再需要设置登录界面,可以用管理员账户登录,进行设置即可。

阅读(1295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~