大屏监控 Metabase 集成到 Java 项目
前言
概述:Metabase可以帮助你把数据库中的数据更好的呈现给更多人,数据分析人员通过建立一个”查询“(Metabase中定义为Question)来提炼数据,再通过仪表盘(Dashboards)来组合展示给公司成员
分享
支持公开链接、公开嵌入、应用嵌入三种方式,前两种方式由于其公开性,只能分享一些见得人的数据,如果一些见不得人的数据就要通过第三种方式实现了。
这玩意官方案例支持 Python、Node、Ruby、Clojure,但就是不支持 Java,撸主只要自己手撸了。
集成
参考 Node.js 的集成方式:
// you will need to install via 'npm install jsonwebtoken' or in your package.jsonvar jwt = require("jsonwebtoken");var METABASE_SITE_URL = "http://127.0.0.1:3000";
var METABASE_SECRET_KEY = "76e7feb6e9456f9f924a9f463d03cbcaedf72b4a68844fa88e5f05c6345d409d";var payload = {resource: { dashboard: 2 },params: {},exp: Math.round(Date.now() / 1000) + (10 * 60) // 10 minute expiration
};
var token = jwt.sign(payload, METABASE_SECRET_KEY);var iframeUrl = METABASE_SITE_URL + "/embed/dashboard/" + token + "#bordered=true&titled=true";
其实就是根据秘钥生成一个 Token,然后拼接到访问链接,后台再对其进行验证,如果 Token 有效则认证通过。
仿照撸一个Java版本:
import com.alibaba.fastjson.JSONObject;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;import java.util.Base64;
import java.util.Date;
import java.util.Map;/*** 报表生成加密URL*/
public class JWTUtils {/*** 创建token*/public static String createJWT(Map<String, Object> payload, String secretKey){try {String metaBaseEncodedSecretKey = Base64.getEncoder().encodeToString(secretKey.getBytes());return Jwts.builder().setHeaderParam("typ", "JWT").setClaims(payload).signWith(SignatureAlgorithm.HS256, metaBaseEncodedSecretKey).setIssuedAt(new Date()).compact();}catch (Exception e){e.printStackTrace();}return null;}/*** 创建token*/public static String getTokenUrl(Integer dashboard,String secretKey){int round = Math.round(System.currentTimeMillis() / 1000)+10*60; // 10 minute expirationJSONObject resource = new JSONObject();resource.put("dashboard",dashboard);JSONObject payload = new JSONObject();payload.put("resource",resource);payload.put("params",new JSONObject());payload.put("exp",round);String token = JWTUtils.createJWT(payload,secretKey);return BI_SITE_URL + "/embed/dashboard/" + token + "#theme=night&bordered=false&titled=false";}private static final String BI_SITE_URL = "http://127.0.0.1:3000";public static void main(String[] args) {String secretKey = "******";String url = getTokenUrl(2,secretKey);System.out.println(url);}
}
预览
小结
安全认证之后的地址就可以分享出去了,后台可以对链接失效时间以及用户数据权限做验证,这样数据就只能让那些见不得人的看了。
微信支付收银台功能上线了
支付宝支付新版 SDK 上线,让支付触手可及
太厉害了!我用 Nginx 提升系统10倍性能
牛逼,CTO点名要搞个灰度发布系统
微信支付分账,就是这么简单!
真香!一行命令搞定 GIT 私服仓库
暴力吃瓜之合并大西瓜小游戏!
阿里一面:如何保证API接口数据安全?
推荐一款高颜值的 Spring Boot 快速开发框架
推荐一个超级简单 Java 图形验证码模块
分享一个支付大屏实时监控数据平台
推荐一款清爽的实时监控大屏附安装教程
大屏监控 Metabase 集成到 Java 项目相关推荐
- 大屏监控系统实战(1)-项目介绍
这个项目的起源非常的偶然,源于今年我有幸入选2019年CSDN博客之星年度总评选,并且排名一直还不错,在前20的行列中,而排名第一的天元浪子大大,用python分析了一波投票情况,我本人对自己也非常感 ...
- 大屏监控系统实战(16)-项目拾遗
一.概述 项目已经算是完结了,但还有一些待优化的地方,我新开一帖,准备慢慢补充一下. 二.问题列表及解决方案 1.页面样式 页面显示的问题,可调整的地方比较多,随着数据的变化,目前页面上已经有几处显示 ...
- 大数据毕设/课设 - 数据大屏监控可视化设计与实现
文章目录 0 前言 1 介绍 2 实现效果 3 部分关键代码 4 项目源码获取方式 0 前言 Hi,大家好,今天给大家介绍一个大数据可视化项目,大家可以用于自己的课设或毕设,可以灵活耦合任意数据,为自 ...
- 一个大屏监控380个泵房,13000个设备,智能水务是怎么实现的?
江苏中法水务有限公司前身是常熟市自来水公司,成立于1984年,经过2018年的股份制改革,现在核心业务主要分为供水.二次供水.污水处理.市政工程和智能水务五大板块,服务于两百万人口. 作为一家公共事业 ...
- 大屏监控系统实战(13)-10分钟投票增量曲线制作(二)
因为内容太多,所以我们分成了两部分,接前文 大屏监控系统实战(11)-10分钟投票增量曲线制作(一) 八.投票网站最近72小时10分钟投票走势和增量数据爬取 在SchedulingTest中添加方法如 ...
- 数字孪生城市可视化大屏设计,智慧楼宇开源项目
纵观城市发展历史,技术的革命必然会带动城市内部的变革.当前,以数字孪生为代表的前言信息技术飞速发展,必然会使社会对数字城市的深度和广度有着更为清晰的认知.加快构建数字孪生城市管理平台,通过三维可视化大 ...
- 大华视屏监控对接集成
@大华视屏监控对接 大华视屏监控结构图 视屏监控主要有三部分组成: 1.网络摄像机IPC,也就是摄像头,摄像头可以接入到NVR,也可以直接接入到DSS:一个IPC对应一个IP地址 2.网络硬盘录像机N ...
- 动态更改echarts 高度_结合Echarts、Ajax技术实现可视化大屏监控 3D
#三维可视化# #3D开发# ECharts是 Enterprise Charts缩写,表示商业级数据表图,它是一个基于html5 Canvas的图标库,可以流畅的运行在PC和移动设备上,兼容当前绝大 ...
- 大屏监控系统实战(15)-打包上线及总结
专栏写到这,代码部分已经完成了,其实是个小小的项目,代码量也不大,但实现了我们想要的目标,那么我们还需要将这个大屏的项目部署到服务器上,我们要做就把完整的流程都做一遍. 一.打包方式的技术选型 项目是 ...
最新文章
- linux工程师前景_小猿圈预测2019年Linux云计算发展前景
- 将毫秒转换_Matlab将Unix时间戳转为可读日期
- 自己的 sublime text 配置
- boost::base_from_member相关的测试程序
- 抽丝剥茧,深入剖析 Python 如何实现变量交换!
- tomcat防cc_浅析Tomcat防止资料被锁的方式
- php如何安装mysql模块,linux安装php 模块--with-mysql --with-mysqli非得需要安装mysql吗汗血宝马...
- (转)JD-Quant量化交易平台设计:延迟latency
- linux命令unzip,linux unzip命令参数及用法详解--linux解压zip文件命令
- gm220s路由器怎么设置_教你netgear无线路由器怎么设置全图解教程
- transition使用
- 遗传算法(Java模拟)
- 计算机无法识别出cd驱动器,迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?【图解】...
- IM3、IIP3、OIP3、G、P1dB指标之间的关系
- DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN
- 建设GSM900/1800双频网应考虑的几个问题(转)
- 阿里云安装部署Oracle11g 详细教程
- hbase实战技术分享案例【网易视频云技术分享】
- 圆台下料展开计算方法_小锥角大圆台的准确下料法
- 小啊呜产品读书笔记001:《邱岳的产品手记-09》第17讲 产品经理如何获得非权力性的影响力 第18讲 产品案例分析:WWFTogether的情怀设计