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..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(.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