網關鑒權后下游統一filter獲取用戶信息


1. 場景描述

最近有點忙,在弄微服務nacos+springcloud gateway這塊工作,以前只是簡單應用,這次因為要對接10幾個系統或者平台,還的鑒權,等后續稍微閑點了,把這塊東西總結下。
剛好要寫個文檔,就一起發出來,場景是其他系統,gateway中鑒權成功后(過來的是加密token),會將個人信息信息會寫到header中,比如手機號、姓名、部門等,為了方便下游系統獲取信息,讓寫一個統一的filter,下游只需注入這個filter就能拿到用戶信息,避免大家都的反復解析,還容易出錯。

gav:

      <dependency>
            <groupId>com.raunjianlaowang.gateway</groupId>
            <artifactId>ruanjianlaowang_gateway_filter</artifactId>
            <version>1.0.0</version>
        </dependency>

2. 使用規則

(1) 業務或下游系統注入這個GateWayFilter

/**
 * 只需要@bean就可以了,也可以放到其他地方,注入。
 * @auther: 軟件老王
 */
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args) ;
    }
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        GateWayFilter gwAuthFilter = new GateWayFilter();
        registrationBean.setFilter(gwAuthFilter);
        List<String> urlPatterns = new ArrayList<String>();
        urlPatterns.add("/*");
        registrationBean.setUrlPatterns(urlPatterns);
        return registrationBean;
    }
}

(2)實體類,只需繼承Param類即可:

/**
 *實體類,只需繼承param類(網關提供)即可
 * @auther: 軟件老王
 */
public class AppParam extends Param {

}

(3)在controller中就通過AppParam接,里面就有值了。

/**
 * controller類,用戶信息已經存在request中了,請求的時候用AppParam就能自動注入數據了。
 * @auther: 軟件老王
 */
    @RequestMapping
    @ResponseBody
    public VO home(AppParam appParam) {
        return  new VO("111","11111","22222");
    }

I’m 「軟件老王」,如果覺得還可以的話,關注下唄,后續更新秒知!歡迎討論區、同名公眾號留言交流!


免責聲明!

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



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