1. 概述
1.1 问题描述
多用户并发一直是服务器部署中头一个关键考虑因素,目前 FineReport 已经提供了相对较好的多用户 Session 控制方案,也提供了 防宕机插件 来控制报表的生命周期。除以上两种方法外,本文提供了一种 JS 控制报表最长预览时间,超时自动退出的方法。
1.2 实现原理
利用 JavaScript 提供的 setTimeout()方法可以进行延时操作,再利用 window.location 来跳转到指定页面,但是如果直接使用强制跳转的话,用户本身登录的会话并没有结束,我们需要用到 Ajax 来进行数据的交互。
2. 示例
2.1 准备 JS 文件
在%FR_HOME%\webapps\webroot\help目录下新建一个 logout.js 文件。
点击可下载:logout.js
JavaScript 代码内容为:
setTimeout(function () {
jQuery.ajax({
url: "/webroot/decision/logout",//单点登录的报表服务器
data: {},
timeout: 5000,
success: function (data) {
window.location = "/webroot/decision/login";
},
error: function () {
alert("error"); // 登录失败(超时或服务器其他错误)
}
});
},3600);//最大预览时间(单位:毫秒),设置了 3600 毫秒后退出,可以根据实际需要进行修改
2.2 引用 JS 文件
打开一个模板,点击菜单栏「模板>模板 Web 属性>引用 JavaScript」,引用 logout.js 文件,如下图所示:
注:如果需要设置全局使用此设置,需要在服务器>服务器配置>引用 Javascript 中引用 logout.js,这样服务器中所有的模板都会使用此生命周期控制方案了。
2.3 效果预览
保存模板,点击「分页预览」,经过 3.6 秒后,报表会自动退出,并进入到重新登录「决策平台」的界面,即通过 JavaScript 可以控制模板预览生命周期。如下图所示:
注:不支持移动端。