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 「軟件老王」,如果覺得還可以的話,關注下唄,后續更新秒知!歡迎討論區、同名公眾號留言交流!