zoukankan      html  css  js  c++  java
  • 小D课堂

    笔记

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

  • 相关阅读:
    关于label和span设置width无效问题解决方法
    CSS 去掉点li 的点
    margin标记可以带一个、二个、三个、四个参数,各有不同的含义。
    MyEclipse下打开ftl文件
    创业企业如何定制商业模式:把握不同行业生命周期,9大要素集中进行创新【转】
    WEB缓存初探
    word 2013如何从某一页开始插入页码
    Ubuntu 16.04 安装jdk
    vmware ubuntu安装vmware tools
    JSP学习
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11455702.html
Copyright © 2011-2022 走看看