jhipster生成項目無法使用restful請求,報access_denied 403錯誤


寫在前邊:

我們的微服務是注冊中心、uaa、gateway為基礎,添加微服務應用,昨天下午在測試jhipster的增刪改查,因為jhipster生成的代碼都是restful的,好不容易找到網關配置的映射路徑,測試get請求是可以的,但是post、put、delete都不行。查資料發現是springboot中整合的spring security的鍋,點這里直接看問題解決辦法

問題重現:

進入網關,本地測試:http://localhost:8080,發現微服務應用的ip映射到了/test/**路徑

因為使用了spring-security,所以,請求的時候需要token,如果header中沒有Cookie值,請求會被攔截,我們必須在同一個瀏覽器中使用postman插件,才能獲取相同的token,注意打開postman的interceptor(客戶端請百度參考,本人放棄治療了……)

記得必須登錄一下gateway,否則也是沒有token的

使用get請求測試下:

看圖片是正常的,我之前在這個微服務中的h2-console中插了幾條數據,訪問http://localhost:微服務應用的端口/h2-console         默認沒有密碼,直接點連接即可進入控制台

 測試一下post請求:(忽略那個jhipster環境,啥也沒配)

訪問拒絕,報403錯誤

 

問題解決:

考慮到所有應用都是通過網關進行通訊的,如圖

去gateway項目中查看源碼,找到gateway\src\main\java\com\shunneng\gateway\config下的MicroserviceSecurityConfiguration.java

找到如圖方法

在方法體最下添加代碼:http.csrf().disable();    如圖

保存,ctrl+c關閉gateway項目,mvnw重啟一下

 效果驗收:

測試一下刪除,注意為防止token過期,刷新localhost:8080 頁面,如未登錄請登錄,然后繼續

尾聲:

這種方法的確很好的解決了這個問題,但是這里就會導致一個問題,之前spring-security這樣攔截是為了防止惡意攻擊,這樣所有的restful請求都放通了,可能會導致不安全。

文中修改配置文件中的放行是我自己配的,組長說這樣可以保證安全,親測無用,感覺二者並無什么區別,但是如果我沒有登錄這個微服務的gateway,我根本都訪問不了好嘛:P

 

如果有更好的辦法,歡迎評論拍磚!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM