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 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!