FineReport中如何自定义登录界面

简介:

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



 

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

自定义登录界面

登录界面设置

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
< 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:



 

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

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



本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1908918,如需转载请自行联系原作者
相关文章
|
机器学习/深度学习 存储 计算机视觉
python深度学习图像处理CSV文件分类标签图片到各个文件夹
python深度学习图像处理CSV文件分类标签图片到各个文件夹
576 0
|
NoSQL IDE 网络协议
Redis高级客户端Lettuce详解(下)
Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。既然能被Spring生态所认可,Lettuce想必有过人之处,于是笔者花时间阅读她的官方文档,整理测试示例,写下这篇文章。
5938 0
|
2月前
|
人工智能 数据可视化 测试技术
Coze, Dify, N8N:三款主流AI工作流平台在测试中的应用对比
在敏捷开发背景下,Coze、Dify和n8n三大AI工作流平台正革新测试自动化。Coze零代码易上手,适合AI密集型任务;Dify支持私有化部署,适配企业级复杂流程;n8n开源可控,擅长系统集成。三者各有优势,助力测试团队实现高效人机协同,提升测试效能。
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与情感计算:AI如何理解人类情感
人工智能与情感计算:AI如何理解人类情感
2333 20
|
存储 缓存 网络协议
【专栏】理解并优化DNS设置对于提高网络速度至关重要
【4月更文挑战第28天】本文探讨了DNS服务器是否能加快网络访问速度。DNS负责将域名转换为IP地址,其查询时间、缓存机制和地理位置都影响网络速度。优化DNS配置,如选择快速的公共DNS服务、使用附近的服务器、确保设备正确配置和利用DNS缓存,都能有效提升网络体验。理解并优化DNS设置对于提高网络速度至关重要。
2445 2
|
并行计算 计算机视觉 异构计算
ModelScope问题之官方模型demo运行时候报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
697 3
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
2305 0
|
Ubuntu Shell 芯片
详细讲解移植u-boot.2022.10版本移植到开发板基本方法
详细讲解移植u-boot.2022.10版本移植到开发板基本方法
1065 0
|
安全 算法 Linux
为什么haveged不适合在虚拟机上使用
为什么haveged不适合在虚拟机上使用
824 0