若依集成JimuReport积木报表进行token传递
若依集成积木就不说了官网有ruoyi vue版集成积木报表 · JimuReport 积木报表 · 看云 (jeecg.com)
考虑到用若依的一般都是刚成立的公司,没有自己公司的框架,所以一般都是前后端都干,我这里前后端都搞上,让你们快速搞完摸鱼去,代码写的如果不好多担待。
如果这篇文章对你有帮助希望点个赞,这样我的分享才会有乐趣!谢谢大家!
接下来是积木进行token传递的集成过积木主要有两个接口需要进行token传递
第一次写博客不好之处的多担待
1. /jmreport/list 查看积木列表
2. /jmreport/view/* 查看积木报表详情
后端
主要是后端的
一、首先说第一个 /jmreport/list 接口,也就是下面这个页面
1.直接创建 JimuReportTokenService 实现 JmReportTokenServiceI接口就行了
2.实现
package com.ruoyi.framework.web.service;import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.TokenUtils;
import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;
import java.util.Map;/*** @author dzh* @version 1.0* @date 2022/7/26 11:06*/
@Component
public class JimuReportTokenService implements JmReportTokenServiceI {@AutowiredTokenService tokenService;@Overridepublic String getUsername(String token) {LoginUser loginUser = tokenService.getLoginUser(token);return loginUser.getUsername();}@Overridepublic Boolean verifyToken(String token) {LoginUser loginUser = tokenService.getLoginUser(token);if(StringUtils.isNotNull(loginUser)){tokenService.verifyToken(loginUser);return true;}return false;}@Overridepublic String getToken(HttpServletRequest request) {return TokenUtils.getTokenByRequest(request);}@Overridepublic Map<String, Object> getUserInfo(String token) {return null;}
}
3.TokenUtils
/*** @author dzh* @version 1.0* @date 2022/7/26 14:18*/
public class TokenUtils {/*** 获取 request 里传递的 token** @param request* @return*/public static String getTokenByRequest(HttpServletRequest request) {String parameter = request.getParameter("token");String header = request.getHeader("token");if (parameter == null && header == null) {parameter = request.getHeader("Authorization");}return parameter != null ? parameter : header;}
}
4. getLoginUser方法重载了一个
/*** 获取用户身份信息** @return 用户信息*/public LoginUser getLoginUser(String token){if(StringUtils.isNull(token)){return null;}token = token.replace(Constants.TOKEN_PREFIX, "");if (StringUtils.isNotEmpty(token)){try{Claims claims = parseToken(token);// 解析对应的权限以及用户信息String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);String userKey = getTokenKey(uuid);LoginUser user = redisCache.getCacheObject(userKey);return user;}catch (Exception e){}}return null;}
4.这样子就可以了再次访问接口时如果不带token时就会报错
5.成功案例 /jmreport/list?token=#{token}
二 /jmreport/view/* 查看积木报表详情
这个需要做一个拦截器,监听/jmreport/view/*接口,必须携带token
1.定义拦截器
代码段
package com.ruoyi.framework.interceptor;import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.framework.web.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author dzh* @version 1.0* @date 2022/7/26 16:28*/
@Component
public class JimuInterceptor implements HandlerInterceptor {@Autowiredprivate TokenService tokenService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {response.setContentType("text/html; charset=UTF-8");request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");String token = request.getParameter("token");LoginUser loginUser = tokenService.getLoginUser(token);if (loginUser != null) {return true;}JSONObject jsonObject = new JSONObject();jsonObject.put("code", 200);jsonObject.put("msg", "参数错误或无权访问数据");response.getWriter().println(jsonObject);return false;}
}
2.进行接口拦截
完成,这样访问/jmreport/view 也需要token了
前端
接下来主要是前端的
我这里是放到菜单中了并没有另外开一个网页
1.搞一个菜单
2.代码段1
<template><i-frame :src="openUrl" />
</template><script>
import { getToken } from '@/utils/auth'
import { indexUrl } from '@/api/ruoyi/jimu/jimu'
import iFrame from "@/components/iFrame/index";export default {name: 'Jimu',components: { iFrame },data() {return {openUrl: ''}},created() {indexUrl().then(res => {this.openUrl = res + '?token=' + getToken()})}
}
</script><style scoped></style>
3.代码段2
import request from "@/utils/request";
// 首页
export function indexUrl() {return request({url: "/ruoyi/jimu/index",method: "get"});
}
4.后端代码段,其实就是返回积木列表的访问地址,获取当前服务器I拼接了一下
/*** @author dzh* @version 1.0* @date 2022/7/26 11:02*/
@RestController
@RequestMapping("/ruoyi/jimu")
public class JimuController {@AutowiredEnvironment environment;@GetMapping("/index")public String index(){String hostIp = IpUtils.getHostIp();String property = environment.getProperty("ruoyi.reportUrl");String format = String.format(property, hostIp);return format+"/jmreport/list";}
}
5.application.yml
完成,不管怎么访问都需要携带带token的,摸鱼去吧!
如果这篇文章对你有帮助希望点个赞,这样我的分享才会有乐趣!谢谢大家!
若依集成JimuReport积木报表进行token传递相关推荐
- JimuReport积木报表,一个好用的开源免费的报表平台!
JimuReport积木报表是一款集成报表设计和大屏设计的在线报表平台,使用起来简单方便,可以帮助用户像excel一样设计页面. 使用积木报表平台,用户不仅10分钟就可以设计一个炫酷大屏,还能在平台快 ...
- JimuReport积木报表,一个好用的开源免费的报表平台
JimuReport积木报表是一款集成报表设计和大屏设计的在线报表平台,使用起来简单方便,可以帮助用户像excel一样设计页面. 使用积木报表平台,用户不仅10分钟就可以设计一个炫酷大屏,还能在平台快 ...
- JimuReport积木报表打印多出一页空白页问题(解决方案)
原文地址: JimuReport积木报表打印多出一页空白页问题 - BIGTREE (whwtree.com) 问题描述 积木报表预览或打印时,会多出一页空白页问题. 解决方案 总结如下: (1)方法 ...
- JimuReport积木报表1.3.3 版本发布,可视化报表工具
项目介绍 积木报表,是一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计报表!功能涵盖,数据报表.打印设计.图表报表.大屏设计等! 秉承"简单.易用.专业"的产品理念,极大 ...
- JimuReport积木报表 v1.4.2版本发布,免费的可视化低代码报表
项目介绍 积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表.打印设计.图表报表.大屏设计等! 秉承"简单.易用.专业"的产品理念,极大的降低 ...
- 若依ruoyi框架集成第三方报表工具(集成jmreport积木报表)
目录 1.集成jmreport工具 1.1.引入依赖 1.2.下载依赖SQL在自己的数据库执行 1.3.若依启动类中增加jmreport的扫描 1.4.若依鉴权机制中对jmrepot添加白名单,不做t ...
- JimuReport积木报表与JeecgBoot集成文档—开源免费的报表工具!
积木报表 ,一个开源免费的报表工具,像搭建积木一样在线设计报表!功能涵盖数据报表设计.打印设计.图表设计.大屏设计等! 领先的企业级Web报表平台软件,采用纯Web在线技术,专注于解决企业报表快速制作 ...
- JimuReport积木报表1.1.09 版本发布,免费的企业级 Web 报表工具
项目介绍 积木报表,是一款免费的企业级Web报表工具,像搭建积木一样在线设计报表!功能涵盖,数据报表.打印设计.图表报表.大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表 ...
- JimuReport积木报表1.3.1 beta版本发布,免费的Web报表工具
项目介绍 积木报表,是一款免费的企业级Web报表工具,像搭建积木一样在线拖拽设计报表!功能涵盖,数据报表.打印设计.图表报表.大屏设计等! 秉承"简单.易用.专业"的产品理念,极大 ...
最新文章
- keil c语言模块化编程,keil C模块化编程总结
- [云炬创业管理笔记]第五章打磨最有效的商业模式测试4
- js 数组修改watch_前端面试:专注Vue.js常见的问题答疑,掌握了基本上Vue就过关了...
- FastDFS的配置、部署与API使用解读(7)Nginx的FastDFS模块(转)
- 《网易编程题》计算糖果
- 使用Hibernate JPA的自定义布尔用户类型
- Java里面的几种路径的区别
- Chrome浏览器必装的扩展工具
- 《数据库系统概论》错题集
- 解决Navicat激活、注册时候出现No All Pattern Found的问题
- 数据分类分级产品,一文详解
- vnc全屏界面怎么设置小_如何设置 才能 修改 vnc 有效窗口大小
- 哈佛大学有没有计算机专业,美国哈佛大学计算机专业课程有哪些?
- 键盘连接计算机接口,终于明白电脑如何连接键盘
- 15个令iPhone用户嫉妒的Android widgets 桌面组件
- 和平精英小程序服务器开小差,1个BUG存在了4年 光子通过小提示说出了无法修复的原因...
- visual assistant x 破解版使用方法及下载地址
- 做短视频必须要知道的几个视频设置参数,爆款必备。
- js创建对象,构造函数,this,原型,继承
- FUD(恐惧,不确定性和怀疑)被揭穿...