给zuul网关添加过滤器
生活随笔
收集整理的這篇文章主要介紹了
给zuul网关添加过滤器
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
網(wǎng)關(guān)的登錄攔截器
接下來,我們在Zuul編寫攔截器,對用戶的token進(jìn)行校驗(yàn),如果發(fā)現(xiàn)未登錄,則進(jìn)行攔截。
?
引入jwt相關(guān)配置
既然是登錄攔截,一定是前置攔截器,我們在leyou-gateway中定義。
首先在pom.xml中,引入所需要的依賴:
?
<dependency><groupId>com.learn.common</groupId><artifactId>learn-common</artifactId><version>1.0.0-SNAPSHOT</version> </dependency> <dependency><groupId>com.learn.auth</groupId><artifactId>learn-auth-common</artifactId><version>1.0.0-SNAPSHOT</version> </dependency>然后編寫application.yml屬性文件,添加如下內(nèi)容:
learn:jwt:pubKeyPath: C:\\tmp\\rsa\\rsa.pub # 公鑰地址cookieName: LY_TOKEN # cookie的名稱編寫屬性類,讀取公鑰:
@ConfigurationProperties(prefix = "learn.jwt") public class JwtProperties {private String pubKeyPath;// 公鑰private PublicKey publicKey; // 公鑰private String cookieName;private static final Logger logger = LoggerFactory.getLogger(JwtProperties.class);@PostConstructpublic void init(){try {// 獲取公鑰和私鑰this.publicKey = RsaUtils.getPublicKey(pubKeyPath);} catch (Exception e) {logger.error("初始化公鑰失敗!", e);throw new RuntimeException();}}public String getPubKeyPath() {return pubKeyPath;}public void setPubKeyPath(String pubKeyPath) {this.pubKeyPath = pubKeyPath;}public PublicKey getPublicKey() {return publicKey;}public void setPublicKey(PublicKey publicKey) {this.publicKey = publicKey;}public String getCookieName() {return cookieName;}public void setCookieName(String cookieName) {this.cookieName = cookieName;} }編寫過濾器邏輯
基本邏輯:
-
獲取cookie中的token
-
通過JWT對token進(jìn)行校驗(yàn)
-
通過:則放行;不通過:則重定向到登錄頁
重啟,刷新頁面,發(fā)現(xiàn)請求校驗(yàn)的接口也被攔截了:
證明我們的攔截器生效了,但是,似乎有什么不對的。這個(gè)路徑似乎不應(yīng)該被攔截啊!
總結(jié)
以上是生活随笔為你收集整理的给zuul网关添加过滤器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。