導航:首頁 > 凈水問答 > nginxredis過濾ip

nginxredis過濾ip

發布時間:2023-11-10 19:17:03

⑴ getway不校驗白名單怎麼設置


lovenuo1314

碼齡11年

關注
1、若依後端gateway模塊配置白名單
顧名思義,就是允許訪問的地址。且無需登錄就能訪問。在ignore中設置whites,表示允許匿名訪問。

1.1、在nacos中gateway配置文件中配置


1.2、代碼
package com.ruoyi.gateway.filter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties;
import io.jsonwebtoken.Claims;
import reactor.core.publisher.Mono;

/**
* 網關鑒權
*
* @author ruoyi
*/
@Component
public class AuthFilter implements GlobalFilter, Ordered
{
private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);

// 排除過濾的 uri 地址,nacos自行添加
@Autowired
private IgnoreWhiteProperties ignoreWhite;

@Autowired
private RedisService redisService;

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
{
ServerHttpRequest request = exchange.getRequest();
ServerHttpRequest.Builder mutate = request.mutate();

String url = request.getURI().getPath();
// 跳過不需要驗證的路徑
if (StringUtils.matches(url, ignoreWhite.getWhites()))
{
return chain.filter(exchange);
}
String token = getToken(request);
if (StringUtils.isEmpty(token))
{
return unauthorizedResponse(exchange, "令牌不能為空");
}
Claims claims = JwtUtils.parseToken(token);
if (claims == null)
{
return unauthorizedResponse(exchange, "令牌已過期或驗證不正確!");
}
String userkey = JwtUtils.getUserKey(claims);
boolean islogin = redisService.hasKey(getTokenKey(userkey));
if (!islogin)
{
return unauthorizedResponse(exchange, "登錄狀態已過期");
}
String userid = JwtUtils.getUserId(claims);
String username = JwtUtils.getUserName(claims);
if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
{
return unauthorizedResponse(exchange, "令牌驗證失敗");
}

// 設置用戶信息到請求
addHeader(mutate, SecurityConstants.USER_KEY, userkey);
addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
// 內部請求來源參數清除
removeHeader(mutate, SecurityConstants.FROM_SOURCE);
return chain.filter(exchange.mutate().request(mutate.build()).build());
}

private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value)
{
if (value == null)
{
return;
}
String valueStr = value.toString();
String valueEncode = ServletUtils.urlEncode(valueStr);
mutate.header(name, valueEncode);
}

private void removeHeader(ServerHttpRequest.Builder mutate, String name)
{
mutate.headers(httpHeaders -> httpHeaders.remove(name)).build();
}

private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg)
{
log.error("[鑒權異常處理]請求路徑:{}", exchange.getRequest().getPath());
return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED);
}

/**
* 獲取緩存key
*/
private String getTokenKey(String token)
{
return CacheConstants.LOGIN_TOKEN_KEY + token;
}

/**
* 獲取請求token
*/
private String getToken(ServerHttpRequest request)
{
String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
// 如果前端設置了令牌前綴,則裁剪掉前綴
if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
{
token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
}
return token;
}

@Override
public int getOrder()
{
return -200;
}
}
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.ruoyi.gateway.config.properties;

import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;

/**
* 放行白名單配置
*
* @author ruoyi
*/
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "security.ignore")
public class IgnoreWhiteProperties
{
/**
* 放行白名單配置,網關不校驗此處的白名單
*/
private List<String> whites = new ArrayList<>();

public List<String> getWhites()
{
return whites;
}

public void setWhites(List<String> whites)
{
this.whites = whites;
}
}

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
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
啟動代碼並測試

已經走到了sytem模塊中,並且沒有進行登錄;說明我們的配置已經生效

文章知識點與官方知識檔案匹配
Java技能樹首頁概覽
84637 人正在系統學習中
打開CSDN,閱讀體驗更佳

Amazon API Gateway使用IP白名單控制後端服務訪問_亞林瓜子的博客-CSD...
異地IP驗證 使用移動IP調用,請求被拒絕了。 白名單IP驗證 同樣的請求,在白名單中的IP就可以正常請求。 總結 這里使用的AWS中國北京地區的API Gateway服務,通過策略控制對後台服務的訪問控制。
SpringCloud Gateway網關配置(二)介面訪問IP白名單配置(真實IP)
SpringCloud Gateway網關配置中,需要對訪問的IP設置白名單,SpringCloud Gateway官方給出YML配置文件配置。 如下: 5.10. The RemoteAddr Route Predicate Factory The RemoteAddr route predicate factory takes a list (min size 1) of so...
Spring Cloud Gateway 網關實現白名單功能
對於微服務後台而言,網關層作為所有網路請求的入口。一般基於安全考慮,會在網關層做許可權認證,但是對於一些例如登錄、注冊等介面以及一些資源數據,這些是不需要有認證信息,因此需要在網關層設計一個白名單的功能。本文將基於 Spring Cloud Gateway 2.X 實現白名單功能。注意事項: Gateway 網關層的白名單實現原理是在過濾器內判斷請求地址是否符合白名單,如果通過則跳過當前過濾器。如果有多個過濾器,則需要在每一個過濾器里邊添加白名單判斷。......
繼續訪問
若依vue分離版(ruoyi-vue)跳過token驗證,設置白名單
找到SecurityConfig類的configure方法 如圖所示 在設置白名單後還需要把介面上的許可權標識符去掉。然後需要重啟一下項目,熱載入不行,會報錯。
繼續訪問

Kong Gateway - 13 基於網關服務的IP白名單限制訪問(Whitelist IP Restri...
為名稱為book的服務的路由{route_id啟用IP白名單限制訪問其中192.168.10.50表示限制macOS系統這一台計算機不能訪問book服務的路由其中192.168.43.0/24表示限制IP地址是192.168.43這一整個網段的IP都不能訪問book服務的路由(Windows 10在此...
服務網關:Gateway_青銅造白的博客
可以實現日誌攔截、許可權控制、解決跨域、限流、熔斷、負載均衡,隱藏服務端的ip,黑名單與白名單攔截、授權等。 二:gateway的核心概念 1、Route(路由):就是轉發規則 Spring Cloud Gateway的基礎元素,可簡單理解成一條轉發的規則。包含:ID...
SpringCloud Gateway網關配置(二)介面訪問IP白名單配置(真實IP)
SpringCloud Gateway網關配置中,需要對訪問的IP設置白名單,SpringCloud Gateway官方給出YML配置文件配置。 如下: 5.10. The RemoteAddr Route Predicate Factory The RemoteAddr route predicate factory takes a list (min size 1) of sources, which are CIDR-notation (IPv4 or IPv6) strings, such as 1
繼續訪問
nacos許可權認證(二) 開啟許可權認證
直接設置下述屬性為true,就可以避免 nacos許可權認證(一) 中的問題。 這個時候再訪問nacos頁面,則會直接報錯。因此,還需要再設置兩個屬性(數值可以隨便填)。添加好這兩個屬性時頁面就能正常訪問了。注意:如果你遇到這種情況,只需要關閉提示,點擊用戶名,登出,然後重新登錄即可。這個時候,如果你加修改直接啟動其他服務,則其他服務無法正常連接nacos,也需要坐一番配置。需要再其他服務的配置文件中加上如下配置。 這樣,其他服務就能正常連接nacos了。至此,nacos的許可權漏洞問題就解決了。
繼續訪問

若依RuoYi-Cloud代碼學習三---ruoyi-gateway擴展gateway網關組件的知識
一、API 網關概述 作為微服務的門面,應用於服務數量眾多、復雜度較高、規模比較大的系統。 優點: 客戶端通過 API 網關與微服務交互時,客戶端只需要知道 API 網關地址即可,而不需要維護大量的服務地址,簡化了客戶端的開發。 客戶端直接與 API 網關通信,能夠減少客戶端與各個服務的交互次數。 客戶端與後端的服務耦合度降低。 節省流量,提高性能,提升用戶體驗。 API 網關還提供了安全、流控、過濾、緩存、計費以及監控等 API 管理功能。 常見API 網關實現方案 Spring Cloud G
繼續訪問
熱門推薦 GateWay中添加白名單
最近開發中有一個鑒權的操作,最後需要進行添加白名單的,廢話不多說,直接上代碼吧, 這是我的項目結構 applicaton啟動類: import org.springframework.boot.SpringApplication; import org.springframework.cloud.client.SpringCloudApplication; import org.spr...
繼續訪問

Spring Gateway+白名單+docker
域名解析 從物理機上調用外部服務正常,但是docker里的java服務去調用卻有問題。 答案 docker並不能使用宿主機的host配置信息 為每一個http請求定製header 如果在RouteLocatorBuilder里設置header的話就會對所有http request生效,如果為了對每個request請求使用不同header需要如下設置 @Configuration public cl...
繼續訪問
GateWay網關應用案例(跨域、限流、黑白名單)
Spring Cloud Gateway是基於Spring Boot 2.x,Spring WebFlux和Project Reactor 構建的。屬於非同步非阻塞架構 Spring Cloud Gateway與Spring Data 和Spring Securit 技術不能同時使用 Spring Cloud Gateway基於Spring Boot和Spring Webflux提供的Netty運行。它在傳統的Servlet容器中或用WAR的方式構建時不起作用 網關基本的功能 :鑒權、流量控制、熔斷、路徑重寫
繼續訪問

ruoyi分離版前端白名單
ruoyi分離版前端白名單 先在router下的index.js中加上需要添加的路由 之後再permission.js下的whiteList中加上上面添加的路由就可以了 後端的介面 介面白名單 /**是匹配路徑下的所有介面,也可以直接指定某一個具體的介面 ...
繼續訪問
若依後端gateway模塊解決跨域問題
跨域問題
繼續訪問

微服務項目在gateway網關配置路徑訪問白名單
網關的鑒權:許可權身份認證作用實際上就是由一串組合起來的過濾器實現的, 過濾器的自定義過程就是實現兩個介面org.springframework.cloud.gateway.filter.GlobalFilter和org.springframework.core.Ordered 通過重寫org.springframework.cloud.gateway.filter.GlobalFilter中的filter方法來定義過濾的邏輯 通過重寫org.springframework.core.Ordered中的get
繼續訪問
若依微服務SpringCloud—使用Spring Cloud Gateway網關
一.API網關 API網關,就是指系統的統一入口,它封裝來應用程序的內部結構,為客戶端提供統一服務,一些與業務本身功能無關的公共邏輯可以在這里實現,諸如認證,鑒權,監控,路由轉發等等。 二.業界流行的網關 (1)Ngnix+lua :使用nginx的反向代理和負載均衡可實現api伺服器的負載均衡及高可用。lua是一種腳步語言,可以來編寫一些簡單的nginx支持lua腳本。 (2)Kong:基於Nginx+Lua開發,性能高,穩定,有多個可用的插件(限流,鑒權等等)可以開箱即用。缺點:只支持http協
繼續訪問

最新發布 若依前後端分離ruoyi-vue請求添加白名單403
【代碼】若依前後端分離ruoyi-vue請求添加白名單403。
繼續訪問

Nacos配置與踩坑總結
核心問題: 1.不同域名,走不同配置 2.開關、配置、JSON三種配置類型 解決方案 設計思路: 1.分三大類: 業務配置、域名配置、域名自定義配置 業務配置:用於配置所有業務中的配置信息 針對業務情況,分為三類業務配置:開關配置、基礎配置、數據配置(黑/白名單) 每種配置都為單獨的nacos 針對大促情況:將三類配置各自再兩個環境配置,共三個環境配置,方便在不同配置環境中自由切換 域名配置:用於配置域名走哪個配置環境,實現出現問題快速將某域名切換到不同環境 域
繼續訪問

微服務網關springcloud gateway自定義全局過濾器
微服務網關springcloud gateway自定義全局過濾器
繼續訪問
ruoyi-spring boot 升級為nacos配置
springboot集成nacos
繼續訪問
若依Cloud之旅(二):一次登錄到出現界面,若依做了什麼?
若依一次登錄到出現界面的三個介面都做了什麼
繼續訪問

實現登錄驗證
最近練習搭建了一個後台管理系統,首先第一步做了關於驗證登錄的功能.以下項目使用了Nacos作為服務發現和注冊中心,將Auth和gateway,system等相關多個微服務注冊進Nacos.每次刷新登錄頁面,就會獲取新的驗證碼(,輸入正確的驗證碼即可成功跳轉至首頁. 獲取驗證碼url:http://localhost/dev-api/code - dev-api是前端設置的反向代理,實際訪問的是網關路徑和埠.即在網關gateway模塊做了路由轉發.返回給前端 /** * 路由轉發...
繼續訪問
若依前後端分離-免登錄
項目需要對若依進行不輸入賬號密碼的登錄,所以臨時進行修改,增加獲取不到token時,判斷是否攜帶了某個特殊參數,有就用默認的賬號密碼調用登錄達到驗證登錄的需求。 http://localhost/#/?index=1 // 沒有token if (whiteList.indexOf(to.path) !== -1) { // 在免登錄白名單,直接進入 next() } else if (to.query.index === '1') { let..
繼續訪問

gateway白名單
gateway

閱讀全文

與nginxredis過濾ip相關的資料

熱點內容
酒精蒸餾應注意什麼 瀏覽:245
邯鄲南污水處理廠技術 瀏覽:777
雞蛋皮怎麼洗暖瓶水垢 瀏覽:350
喜客odea咖啡機除垢 瀏覽:393
新馬3空調濾芯怎麼安裝 瀏覽:794
超濾膜乙腈 瀏覽:833
凈水機沒有回水怎麼辦 瀏覽:135
如何降低反滲透膜清洗成本 瀏覽:692
污水井內支架用什麼處理方式 瀏覽:506
飲水機溫控器控制什麼 瀏覽:428
反滲透膜殺菌 瀏覽:23
補茶幾的是什麼樹脂 瀏覽:815
工業純水設備價格多少 瀏覽:755
沁園牌管道式超濾凈水器裝法 瀏覽:528
濾芯安裝在什麼位置 瀏覽:549
上海10寸過濾芯多少錢一個 瀏覽:714
酸洗磷化污水處理設備哪裡賣 瀏覽:851
盼盼樹脂門隔音好嗎 瀏覽:203
納濾反沖洗頻率 瀏覽:437
高透明環氧樹脂里放動物 瀏覽:709