ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网关鉴权后下游统一filter获取用户信息

2019-09-29 09:01:17  阅读:242  来源: 互联网

标签:AppParam registrationBean 网关 public filter gateway new 鉴权


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

标签:AppParam,registrationBean,网关,public,filter,gateway,new,鉴权
来源: https://www.cnblogs.com/ruanjianlaowang/p/11605826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有