FineReport跨域单点登录实现:IFrame实例与步骤
需积分: 50 34 浏览量
更新于2024-09-11
收藏 192KB PDF 举报
在表格制作软件Finereport中实现iframe跨域单点登录是一项常见的需求,尤其当oa系统和报表系统部署在不同的服务器时。Finereport是一款强大的报表开发工具,支持在网页应用中嵌入报表并处理跨域问题。本文主要讲解如何在Finereport中利用iframe技术来实现oa系统与报表系统的单点登录流程。
首先,问题的关键在于解决跨域问题。通常,由于安全限制,浏览器不允许一个域的页面直接访问另一个域的资源,但通过iframe可以间接实现数据交互。在oa系统中,你需要在登录界面添加一个隐藏的iframe元素,用于承载finereport的报表认证请求。
实现思路如下:
1. **创建嵌入式iframe**:
当用户在oa系统的登录页面填写用户名和密码后,触发`doSubmit()`方法。这个方法首先获取用户输入的用户名和密码,然后创建一个新的iframe元素(`document.createElement("iframe")`)。
2. **设置iframe源地址**:
将finereport的报表认证地址作为iframe的`src`属性,例如:`scr.src="http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso&username="+username+"&password="+password;`。这样,oa系统的请求会通过iframe发送到finereport服务器进行身份验证。
3. **处理跨域兼容性**:
考虑到不同浏览器可能对iframe的使用存在细微差别,代码中需要针对浏览器的差异进行适配,比如IE系列的浏览器可能需要使用`document.domain`属性来调整同源策略。具体实现可能涉及到JavaScript的`window.postMessage()`或者JSONP等技术。
4. **将iframe添加到页面**:
创建好的iframe标签被插入到oa系统的登录页面的`<head>`部分,确保它能在用户点击登录按钮时立即加载并执行finereport的认证逻辑。
5. **异步交互**:
跨域登录过程中,oa系统与finereport之间的通信通常是异步的。用户点击登录后,oa系统等待iframe中的认证结果,这通常是通过监听iframe的`load`事件或设置iframe的`postMessage`监听器来实现的。
总结来说,通过在oa系统登录页面中嵌套一个iframe,并将finereport的认证请求导向该iframe,结合适当处理跨域兼容性,可以实现在不同服务器环境下,用户仅需一次登录即可访问包含在iframe中的finereport报表。这对于提升用户体验和简化管理是非常有帮助的。如果你需要使用finereport,可以从其官方网站下载试用版(<http://www.finereport.com/products/trial>),然后根据上述步骤进行实际操作和配置。
2020-10-12 上传
iris_1992
- 粉丝: 7
- 资源: 27
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦