SpringBoot關(guān)閉druid的頁(yè)面和添加密碼驗(yàn)證方式
這篇文章主要介紹了SpringBoot關(guān)閉druid的頁(yè)面和添加密碼驗(yàn)證方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
SpringBoot關(guān)閉druid的頁(yè)面和添加密碼驗(yàn)證
在生產(chǎn)環(huán)境中,需要關(guān)閉druid的頁(yè)面,以免被攻擊。
application.properties配置文件中添加參數(shù)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Druid 數(shù)據(jù)源監(jiān)控配置# 是否啟用StatViewServlet(監(jiān)控頁(yè)面)false為不啟動(dòng)spring.datasource.druid.stat-view-servlet.enabled=truespring.datasource.druid.stat-view-servlet.url-pattern=/druid/*# IP白名單(沒(méi)有配置或者為空,則允許所有訪問(wèn))spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.0.1# IP黑名單 (存在共同時(shí),deny優(yōu)先于allow)spring.datasource.druid.stat-view-servlet.deny=192.168.0.0# 禁用HTML頁(yè)面上的“Reset All”功能spring.datasource.druid.stat-view-servlet.reset-enable=false# 登錄名spring.datasource.druid.stat-view-servlet.login-username=admin# 登錄密碼spring.datasource.druid.stat-view-servlet.login-password=admin |
SpringBoot集成druid監(jiān)控
1.引入pom依賴
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<!-- druid數(shù)據(jù)庫(kù)連接池 --><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version></dependency> |
2.配置文件配置監(jiān)控的屬性
注意:如果不想要登錄頁(yè)面,配置文件中可注釋掉用戶名和密碼
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
########## 配置StatViewServlet(監(jiān)控頁(yè)面),用于展示Druid的統(tǒng)計(jì)信息 ########### 啟用StatViewServletspring.datasource.druid.stat-view-servlet.enabled=true# 訪問(wèn)內(nèi)置監(jiān)控頁(yè)面的路徑,內(nèi)置監(jiān)控頁(yè)面的首頁(yè)是/druid/index.htmlspring.datasource.druid.stat-view-servlet.url-pattern=/druid\/*# 不允許清空統(tǒng)計(jì)數(shù)據(jù),重新計(jì)算spring.datasource.druid.stat-view-servlet.reset-enable=false# 配置監(jiān)控頁(yè)面訪問(wèn)用戶名#spring.datasource.druid.stat-view-servlet.login-username=admin# 配置監(jiān)控頁(yè)面訪問(wèn)密碼#spring.datasource.druid.stat-view-servlet.login-password=admin# 允許訪問(wèn)的地址,如果allow沒(méi)有配置或者為空,則允許所有訪問(wèn)#spring.datasource.druid.stat-view-servlet.allow=127.0.0.1# 拒絕訪問(wèn)的地址,deny優(yōu)先于allow,如果在deny列表中,就算在allow列表中,也會(huì)被拒絕#spring.datasource.druid.stat-view-servlet.deny=########## 配置WebStatFilter,用于采集web關(guān)聯(lián)監(jiān)控的數(shù)據(jù) ########### 啟動(dòng) StatFilterspring.datasource.druid.web-stat-filter.enabled=true# 過(guò)濾所有urlspring.datasource.druid.web-stat-filter.url-pattern=\/*# 排除一些不必要的urlspring.datasource.druid.web-stat-filter.exclusions=/druid\/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico# 開(kāi)啟session統(tǒng)計(jì)功能spring.datasource.druid.web-stat-filter.session-stat-enable=true# session的最大個(gè)數(shù),默認(rèn)1000spring.datasource.druid.web-stat-filter.session-stat-max-count=1000spring.datasource.druid.initial-size=5spring.datasource.druid.min-idle=5spring.datasource.druid.max-active=20# 配置獲取連接等待超時(shí)的時(shí)間spring.datasource.druid.max-wait=60000# 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒spring.datasource.druid.time-between-eviction-runs-millis=60000# 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒spring.datasource.druid.min-evictable-idle-time-millis=30000spring.datasource.druid.validation-query=SELECT 1 FROM DUALspring.datasource.druid.test-while-idle=truespring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=false# 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小spring.datasource.druid.pool-prepared-statements=truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=20spring.datasource.druid.filters=stat,wall# Spring 監(jiān)控,利用aop 對(duì)指定接口的執(zhí)行時(shí)間,jdbc數(shù)進(jìn)行記錄spring.datasource.druid.aop-patterns= com.admin.controller.*,com.front.controller.* |
注意:每個(gè)/*符號(hào),走做了轉(zhuǎn)譯,復(fù)制過(guò)去的話需要取消轉(zhuǎn)譯符號(hào)
3. 運(yùn)行后,訪問(wèn)方法
(1)可單獨(dú)訪問(wèn)整個(gè)鏈接

(2) 需要將頁(yè)面內(nèi)嵌在項(xiàng)目中:可在后臺(tái)寫(xiě)一個(gè)方法,返回單獨(dú)訪問(wèn)的路徑
- 后臺(tái)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@RestController@RequestMapping("/druid")public class DataSource { @Value("${druid.index}") private String druidIndex; @GetMapping("/druid") public ResponseInfo druid(HttpServletRequest request) { // 127.0.0.1 String remoteAddr = RequestUtils.getRemoteAddr(request); // 訪問(wèn)域名 192.168.1.105 String serverName = request.getServerName(); // 訪問(wèn)端口號(hào) int port = request.getServerPort(); String url = "http://" + serverName + ":" + port + druidIndex; return new ResponseInfo(url); }} |
- 配置文件druid.index
|
1
|
druid.index=/druid/index.html |
- 工具類
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/** * 獲得真實(shí)IP地址。在使用了反向代理時(shí),直接用HttpServletRequest.getRemoteAddr()無(wú)法獲取客戶真實(shí)的IP地址。 * * @param request * ServletRequest * @return */public static String getRemoteAddr(ServletRequest request) { String addr = null; if (request instanceof HttpServletRequest) { HttpServletRequest hsr = (HttpServletRequest) request; for (String header : ADDR_HEADER) { if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = hsr.getHeader(header); } else { break; } } } if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = request.getRemoteAddr(); } else { // 對(duì)于通過(guò)多個(gè)代理的情況,第一個(gè)IP為客戶端真實(shí)IP,多個(gè)IP按','分割 if (addr != null) { int i = addr.indexOf(","); if (i > 0) { addr = addr.substring(0, i); } } } return addr;} |
- 前端
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<template> <iframe :src="this.txtUrl" frameborder="0" width="100%" :style="{height:calHeight}" scrolling="auto"></iframe></template><script>export default { name: 'datasource', data () { return { txtUrl: '' } }, computed: { //計(jì)算屬性 , 設(shè)置iframe高度為窗口高度少100px calHeight() { return (window.innerHeight - 100) + 'px'; } }, methods: { fetchSysteminfo () { // 調(diào)用的后臺(tái)的druid方法 this.$request.fetchDatasource().then(res => { if (res.code === 200) { this.txtUrl = res.data } }).then(this.hideTableLoading).catch(this.hideTableLoading) } }, created () { this.fetchSysteminfo() }}</script> |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
摘抄自網(wǎng)絡(luò),便于檢索查找。

浙公網(wǎng)安備 33010602011771號(hào)