加载事件里,能否获取redis的数据

项目组,打算给帆软加一个越权的判断:每次访问报表前,向redis里存储一个token,报表访问后,清除这个token。

不知道finereport里有什么方法可以取到redis的数据???

数据集或者js都可以!!!!

FineReport iQian 发布于 2025-7-25 10:17
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2025-7-25 10:18

这个不支持提前获取,

最佳回答
0
shirokoLv6资深互助
发布于2025-7-27 13:12

不如换成数据库,

每次访问报表前,向数据库里存储一个数据,报表访问后,清除。

最佳回答
0
Y时光Lv5见习互助
发布于2025-7-27 13:37(编辑于 2025-7-27 14:27)

写个自定义函数,加载的时候去调用一下这个自定义函数,执行获取这个redis数据

自定义函数

package com.fr.plugin;
import com.fr.log.FineLoggerFactory;
import com.fr.script.AbstractFunction;
import com.fr.third.redis.clients.jedis.Jedis;
/**
 * packageName: com.fr.function
 * @version: JDK 8
 * @className: GetRedis
 * @date: 2025/7/27
 * @description: 自定义函数通过输入工号获取token
 */
public class GetRedis extends AbstractFunction {
    public Object run(Object[] args) {
        FineLoggerFactory.getLogger().info("开始获取Redis里的token!");
        //获取传入函数的工号
        Object userNo=args[0];
        FineLoggerFactory.getLogger().info("需要获取token的工号:"+userNo);
        //实列化Redis
        Jedis jedis = new Jedis();//不穿参数默认是localhost 6379
        //通过输入的工号获取token
        String token = jedis.get(userNo.toString());
        FineLoggerFactory.getLogger().info("获取的token:"+token);
        jedis.close();
        return token;
    }
}


//报表加载结束事件
var userNo='123'
//调用自定义函数
var myToken=FR.remoteEvaluate('=GetRedis('+userNo+')');

  • 4关注人数
  • 40浏览人数
  • 最后回答于:2025-7-27 14:27
    请选择关闭问题的原因
    确定 取消
    返回顶部