小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录

笔记

4、自定义Zuul过滤器实现登录鉴权实战
    简介:自定义Zuul过滤器实现登录鉴权实战

    1、新建一个filter包

    2、新建一个类,实现ZuulFilter,重写里面的方法

    3、在类顶部加注解,@Component,让Spring扫描
 

开始

比如下单接口,用户一定要登陆。要传一个token过来判断是否登陆,再去访问对应的接口

登陆的过滤器肯定在整个流程肯定里面最先处理。这里的pre Filters这里最先进行拦截。如果没登陆返回一个403。如果已经登陆,继续访问请求的接口

只需要对需要登陆的接口做限制和过滤即可。
新建Filter.在zuul的项目里。
先建个filter的包

自定义LoginFilter

首先需要继承ZuulFilter,

然后实现里面的方法




给这个类加上@Component注解让spring去扫描这个类

FilterType是过滤器的类型,登陆需要的是前置过滤器


所以设置为PRE_TYPE

order越小越先执行。

order设置为4

设置为true使这个过滤器生效

在这里我们获取到context对象,输出url地址。先测试一下

重启应用。访问测试。输出了URI和url


把常量放在前面,因为常量不可能为空。request.getRequestURI可能为空



这里改成/order/save



什么都没有打印


访问下单接口




访问product接口

没有被拦截

拦截到的操作


Unauthorized是401未授权

可以去搜索下jwt springboot的应用


重启应用测试,请求的时候一定要带token过来。

这里是不带token的测试

到断点这里。token是null值



最终返回null

页面返回了401状态码

在参数后面加上token的值


token可以获取到不为空了。

放行,最终把数据返回来了

把token放在header里面




最终放行

最终返回数据。

以上就是在网关里面做 用户登陆的鉴权

回顾

匹配的地址可以放在一个本地的缓存里面。

大项目用ACL的方式去做。小项目直接在代码里面写if else判断。多判断几个地址




然后我们就在zuulException里面定义校验逻辑

posted @ 2019-09-03 21:11  高山-景行  阅读(253)  评论(0编辑  收藏  举报