前言

概述: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. 大屏监控系统实战(1)-项目介绍

    这个项目的起源非常的偶然,源于今年我有幸入选2019年CSDN博客之星年度总评选,并且排名一直还不错,在前20的行列中,而排名第一的天元浪子大大,用python分析了一波投票情况,我本人对自己也非常感 ...

  2. 大屏监控系统实战(16)-项目拾遗

    一.概述 项目已经算是完结了,但还有一些待优化的地方,我新开一帖,准备慢慢补充一下. 二.问题列表及解决方案 1.页面样式 页面显示的问题,可调整的地方比较多,随着数据的变化,目前页面上已经有几处显示 ...

  3. 大数据毕设/课设 - 数据大屏监控可视化设计与实现

    文章目录 0 前言 1 介绍 2 实现效果 3 部分关键代码 4 项目源码获取方式 0 前言 Hi,大家好,今天给大家介绍一个大数据可视化项目,大家可以用于自己的课设或毕设,可以灵活耦合任意数据,为自 ...

  4. 一个大屏监控380个泵房,13000个设备,智能水务是怎么实现的?

    江苏中法水务有限公司前身是常熟市自来水公司,成立于1984年,经过2018年的股份制改革,现在核心业务主要分为供水.二次供水.污水处理.市政工程和智能水务五大板块,服务于两百万人口. 作为一家公共事业 ...

  5. 大屏监控系统实战(13)-10分钟投票增量曲线制作(二)

    因为内容太多,所以我们分成了两部分,接前文 大屏监控系统实战(11)-10分钟投票增量曲线制作(一) 八.投票网站最近72小时10分钟投票走势和增量数据爬取 在SchedulingTest中添加方法如 ...

  6. 数字孪生城市可视化大屏设计,智慧楼宇开源项目

    纵观城市发展历史,技术的革命必然会带动城市内部的变革.当前,以数字孪生为代表的前言信息技术飞速发展,必然会使社会对数字城市的深度和广度有着更为清晰的认知.加快构建数字孪生城市管理平台,通过三维可视化大 ...

  7. 大华视屏监控对接集成

    @大华视屏监控对接 大华视屏监控结构图 视屏监控主要有三部分组成: 1.网络摄像机IPC,也就是摄像头,摄像头可以接入到NVR,也可以直接接入到DSS:一个IPC对应一个IP地址 2.网络硬盘录像机N ...

  8. 动态更改echarts 高度_结合Echarts、Ajax技术实现可视化大屏监控 3D

    #三维可视化# #3D开发# ECharts是 Enterprise Charts缩写,表示商业级数据表图,它是一个基于html5 Canvas的图标库,可以流畅的运行在PC和移动设备上,兼容当前绝大 ...

  9. 大屏监控系统实战(15)-打包上线及总结

    专栏写到这,代码部分已经完成了,其实是个小小的项目,代码量也不大,但实现了我们想要的目标,那么我们还需要将这个大屏的项目部署到服务器上,我们要做就把完整的流程都做一遍. 一.打包方式的技术选型 项目是 ...

最新文章

  1. linux工程师前景_小猿圈预测2019年Linux云计算发展前景
  2. 将毫秒转换_Matlab将Unix时间戳转为可读日期
  3. 自己的 sublime text 配置
  4. boost::base_from_member相关的测试程序
  5. 抽丝剥茧,深入剖析 Python 如何实现变量交换!
  6. tomcat防cc_浅析Tomcat防止资料被锁的方式
  7. php如何安装mysql模块,linux安装php 模块--with-mysql --with-mysqli非得需要安装mysql吗汗血宝马...
  8. (转)JD-Quant量化交易平台设计:延迟latency
  9. linux命令unzip,linux unzip命令参数及用法详解--linux解压zip文件命令
  10. gm220s路由器怎么设置_教你netgear无线路由器怎么设置全图解教程
  11. transition使用
  12. 遗传算法(Java模拟)
  13. 计算机无法识别出cd驱动器,迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?【图解】...
  14. IM3、IIP3、OIP3、G、P1dB指标之间的关系
  15. DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN
  16. 建设GSM900/1800双频网应考虑的几个问题(转)
  17. 阿里云安装部署Oracle11g 详细教程
  18. hbase实战技术分享案例【网易视频云技术分享】
  19. 圆台下料展开计算方法_小锥角大圆台的准确下料法
  20. 小啊呜产品读书笔记001:《邱岳的产品手记-09》第17讲 产品经理如何获得非权力性的影响力 第18讲 产品案例分析:WWFTogether的情怀设计

热门文章

  1. Windows 11打印测试页
  2. js打印本地pdf(使用HttpPrinter打印插件)
  3. PMP项目经理常用项目管理工具分析
  4. 【实用工具】Gephi下载与安装
  5. 有MDF文件和LDF文件之后怎么创建数据库
  6. 如何修改 SQL Server 中的实例名 ?
  7. 机器学习数学原理(3)——生成型学习算法
  8. 2月14日机构龙虎榜和知名游资操作情况
  9. ACL 2021 | 基于全局字符关联机制联邦学习的中文分词
  10. HCIP-DATACOM H12-831(1-20)