JS实现控制报表最长预览时间,超时自动退出

编辑
  • 文档创建者:yets11
  • 浏览次数:4684次
  • 编辑次数:8次
  • 最近更新:Kevin-s 于 2019-06-23
  • 1. 描述

    多用户并发一直是服务器部署中头疼的一个问题,目前 FineReport 已经提供了相对较好的多用户 Session 控制方案,也提供了 防宕机插件 来控制报表的生命周期。然而这并不是一个通用的解决方案,有些用户并不喜欢安装插件,也有些需要考虑旧版本的兼容性等,所以本文档提供了一种 JS 控制报表最长预览时间,超时自动退出的方法。


    2. 原理

    利用 JavaScript 提供的 setTimeout()方法可以进行延时操作,再利用 window.location 来跳转到指定页面,但是如果直接使用强制跳转的话,用户本身登陆的会话并没有结束,我们需要用到 Ajax 来进行数据的交互。


    3. 实现过程

    1)在%FR_HOME%\webapps\webroot\help目录下新建一个 logout.js 文件,输入以下代码,保存

    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 毫秒后退出,也就是 3.6 秒,可以根据实际需要进行修改。

    2)打开模板>模板 Web 属性>引用 JavaScript依次进行选择 JavaScript 文件,点击增加,保存,即可引用上面的 JavaScript 文件,详细设置请查看 引用 JavaScript,如下图:

    3)预览,发现经过 3.6 秒后,报表会自动退出,并进入到系统重新登录的界面,如下图:


    至此,我们的通过 JavaScript 控制模板预览生命周期的方法已经顺利实现了。

    注:如果需要设置全局使用此设置,需要在服务器>服务器配置>引用 Javascript 中引用 logout.js,这样服务器中所有的模板都会使用此生命周期控制方案了。


    附件列表


    主题: 二次开发
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]