我看到若依做了Druid面板的嵌入,我自己的项目干脆也做一个

一、后台服务SpringBoot:

Druid配置项:

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3308/tt?serverTimeZone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456 # 德鲁伊监控面板配置
druid:
stat-view-servlet:
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 访问druid监控界面的用户名密码
loginUsername: admin
loginPassword: 123456
enabled: true
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

过滤器需要放行监控页面路径:

# xss 过滤配置
xss:
enabled: true
# 忽略不需要过滤的连接
excludes:
- /file/upload
- /chuck-file/chuck
- /druid
# 忽略不需要做html转义的json属性值,多个属性用半角逗号分隔
properties:

Security需要放行CSRF攻击和IFrame跨域配置:

package cn.cloud9.server.struct.cors;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; /**
* Cors跨域访问配置
* @author OnCloud9
* @description
* @project tt-server
* @date 2022年11月06日 下午 05:55
*/
@Configuration
public class CorsConfig extends WebSecurityConfigurerAdapter { @Override
public void configure(HttpSecurity security) throws Exception {
security.authorizeRequests()
.antMatchers("/**").permitAll()
.anyRequest().authenticated()
.and().httpBasic()
.and().cors().configurationSource(corsFilter())
/* 允许iframe访问本服务资源 */
.and().headers().frameOptions().disable()
/* 关闭CSRF攻击阻挡 */
.and().csrf().disable();
} private CorsConfigurationSource corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.addAllowedHeader(CorsConfiguration.ALL);
config.setAllowCredentials(true);
config.addAllowedMethod(CorsConfiguration.ALL); UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return configSource;
} }

二、后台服务SpringBoot:

LightFrame的封装面板:

<template>
<div v-loading="loading" style="height: calc(100vh - 110px)">
<iframe class="iframe-panel" :src="src" />
</div>
</template>
<script>
export default {
name: 'LightFrame',
props: {
src: {
type: String,
required: true
}
},
data() {
return {
height: document.documentElement.clientHeight - 94.5 + 'px',
loading: true,
url: this.src
}
},
mounted() {
setTimeout(() => { this.loading = false }, 300)
}
}
</script> <style scoped>
.iframe-panel {
width: 100%;
height: 100%;
border: none;
overflow-scrolling: auto;
}
</style>

  

Druid监控菜单页面:

<template>
<light-frame :src="druidMonitorUrl" />
</template> <script>
import LightFrame from '@/components/LightFrame'
export default {
name: 'Index',
components: { LightFrame },
data() {
return {
druidMonitorUrl: `${process.env.VUE_APP_BASE_DOMAIN}${process.env.VUE_APP_BASE_API}/druid/index.html`
}
}
}
</script>

地址环境配置:

# just a flag
ENV = 'development' # base api
VUE_APP_BASE_DOMAIN = 'http://127.0.0.1:8080'
VUE_APP_BASE_API = '/demo'
VUE_APP_PROXY_API = '/proxy-api'

  

三、注意事项:

1、只有以后台相同的主机访问项目查看Druid监控才会有效(例如 后台服务主机是127.0.0.1,Web访问的主机也必须以127.0.0.1才可以)

2、IFrame的Src地址,不要使用代理地址去连接请求 (Web配置地址的时候就使用直接地址访问)

3、后台一定要配置iframe跨域放行,因为静态资源不在Web项目里面,是在后台里

四、实现效果:

【Java】Vue-Element-Admin 嵌入Druid监控面板的更多相关文章

  1. vue element Admin - 修改浏览器标签名 + 添加tagView标签 +固定导航头部 + 添加侧边栏Logo

    1 .修改浏览器标签名称: 修改浏览器标签名称在文件:\src\settings.js   image.png 2 .修改固定头部Header和侧边栏 Logo:   image.png 1)侧边栏文 ...

  2. vue element admin 关闭eslint校验

    vue.config.js里面进行设置 lintOnSave: false, // lintOnSave: process.env.NODE_ENV === 'development',

  3. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录

    本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...

  4. druid监控及慢sql记录

    本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...

  5. SpringBoot+SpringCloud+vue+Element开发项目——集成Druid数据源

    添加依赖 pom.xml <!--druid--> <dependency> <groupId>com.alibaba</groupId> <ar ...

  6. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  7. SpringBoot集成阿里巴巴Druid监控

    druid是阿里巴巴开源的数据库连接池,提供了优秀的对数据库操作的监控功能,本文要讲解一下springboot项目怎么集成druid. 本文在基于jpa的项目下开发,首先在pom文件中额外加入drui ...

  8. springboot系列七:springboot 集成 MyBatis、事物配置及使用、druid 数据源、druid 监控使用

    一.MyBatis和druid简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.M ...

  9. 【Spring Boot】利用 Spring Boot Admin 进行项目监控管理

    利用 Spring Boot Admin 进行项目监控管理 一.Spring Boot Admin 是什么 Spring Boot Admin (SBA) 是一个社区开源项目,用于管理和监视 Spri ...

  10. Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目

    Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目 1. Resin4.0.22 1 2. 查看http连接数::Summary>& ...

随机推荐

  1. uniapp 判断当前是保存还是修改操作

    步骤分析: 首先得确定你进入表单后传入了id或者整个对象[这里使用id来进行讲解]其次就是两个请求:POST(保存的) 和 PUT(修改的)最后就是通过传入的id是否存在进行判断即可  POST 请求 ...

  2. web游览器的标签页仿 ios mac 苹果的墓碑机制 (js代码)

    背景: 本来项目开发系统防挂机功能,在其余游览器中均可以使用.但是呢在苹果的safair游览器中会出现几率失效,最后经过排查发现是苹果的墓碑机制导致.即:此标签页活跃,其他标签页假死.然后就导致防挂机 ...

  3. jq 下载带上token设置form表单并且兼容ie8

    先在publice公共资源里面或者自己随便写一个函数自己记得调用就行 先加载form表单组件 /** * 添加form下载组件 * @param {*} wrp */ appendFormDownlo ...

  4. 剑指Offer-67.剪绳子(C++/Java)

    题目: 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[m ...

  5. shiro可以完成哪些工作?

    shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等

  6. 前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化

    前面,本示例实现了折线连接线,简述了实现的思路和原理,也已知了一些缺陷.本章将处理一些缺陷的同时,实现支持连接点的自定义,一个节点可以定义多个连接点,最终可以满足类似图元接线的效果. 请大家动动小手, ...

  7. Eclipse build js卡死 Eclipse 编译太卡,耗时太长解决

    Eclipse build js卡死 Eclipse 编译太卡,耗时太长解决 问题描述:编译停止在js编译中,原来是js的问题 1.首选项-javaScript-Validator-Errors/Wa ...

  8. CloseableHttpClient设置超时时间demo 未设置默认是2分钟

    # CloseableHttpClient设置超时时间demo 未设置默认是2分钟 import org.apache.http.HttpHeaders; import org.apache.http ...

  9. Python 导入包失败,提示“most likely due to a circular import”

    详细报错信息如下: ImportError: cannot import name 'DoReplace' from partially initialized module 'common.do_r ...

  10. python 将查询到数据,处理成包含列名和数据的字典类型数据

    try: self.connect_dbserver() self.cursor.execute(sql) res = self.cursor.fetchall() # 返回的是数组的类型 print ...