笔记
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里面定义校验逻辑