小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里面定义校验逻辑
小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录的更多相关文章
- 小D课堂 - 新版本微服务springcloud+Docker教程_汇总
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
笔记 ============================================= SpringCloud课程笔记.txt 第一章 课程介绍和学习路线 1.微服务架构SpringClou ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响
笔记 4.SpringCloud微服务核心组件Eureka介绍和闭源后影响 简介: SpringCloud体系介绍 官方地址:http://projec ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
笔记 第三章 SpringCloud核心组件注册中心 1.什么是微服务的注册中心 简介:讲解什么是注册中心,常用的注册中心有哪些 (画图) 理解注册中心:服务 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计
笔记 4.微服务下电商项目基础模块设计 简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习 小而精的方式学习微服务 1.用户服务 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_03常见的微服务框架
笔记 3.常见的微服务框架 简介:讲解常用的微服务框架 consumer: 调用方 provider: 被调用方 一个接口一般都会充当两个角色(不是同时充当) ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
笔记 6.Zuul微服务网关集群搭建 简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive https://www.cnblogs.com/liuyisai/ ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-02 springcloud网关组件zuul
笔记 2.SpringCloud的网关组件zuul基本使用 简介:讲解zuul网关基本使用 1.加入依赖 2.启动类加入注解 @EnableZuulProxy 默认集成断路器 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景
笔记 第六章 微服务网关zuul开发实战 1.微服务网关介绍和使用场景 简介:讲解网关的作用和使用场景 (画图) 1)什么是网关 API Gateway,是系 ...
随机推荐
- ubuntu系统---切换Py2.X与Py3.X版本
ubuntu系统---切换Python2.X与Python3.X版本 Python3.X将成为以后的趋势,Python2.X当前用的稍多的版本,但现在不再更新了.因此,小主电脑里也安装了好两个版本的p ...
- celery的简单使用
一 安装celery #首先进行一些简单配置 pip install celery apt-get install erlang apt-get install rabbitmq-server 二 ...
- 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目
解决办法: 一.在以下路径中找到jeesite文件,并删除 1.Tomcat 7.0\conf\Catalina\localhost 2.Tomcat 7.0\webapps 3.Tomcat 7.0 ...
- vue的prop父子组件传值
props down, events up 父组件通过 props 向下传递数据给子组件:子组件通过 events 给父组件发送消息. 静态 props 要让子组件使用父组件的数据,需要通过子组件的 ...
- [MySQL优化] -- 如何查找SQL效率地下的原因
[MySQL优化] -- 如何查找SQL效率地下的原因 来源: ChinaUnix博客 日期: 2009.07.20 16:12 (共有条评论) 我要评论 查询到效率低的 SQL 语句 ...
- AfxMessageBox与MessageBox用法与区别
https://blog.csdn.net/holybin/article/details/28403109 MessageBox()是标准的Win32 API函数,可以直接使用: AfxMessag ...
- MySQL基础练习01--牛客网
目录 1 查找最晚入职员工的信息 2 查找入职第三晚的员工信息 3 查找当前薪水详情及部门编号 4 查找所有员工入职时的薪水情况 5 查找已分配员工姓名 6 查找员工姓名 7 查找涨薪找过15次的员工 ...
- PHP mysqli_get_server_info() 函数
定义和用法 mysqli_get_server_info() 函数返回 MySQL 服务器版本. 语法 mysqli_get_server_info(connection); 实例 返回 MySQL ...
- 洛谷P1436 棋盘分割
洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...
- 使用horovod构建分布式深度学习框架
最近两周一直在尝试着分布式深度学习的架构,主要的原因一方面是几台机子全是1060卡,利用深度网络在较大数据样本上训练的效率极其低下,所以尝试着将几台机子做成分布式,看看能否提高训练效率:第二方面是有人 ...