02、SpringCloud -- Redis和Cookie过期时间刷新功能

秒杀功能完整分析图

在这里插入图片描述

需求:

cookie应该写在网关中,网关中可以自定义filter过滤器,用来实现cookie的刷新和redis中key的刷新,延长用户的操作时间。

就是让用户每操作一次,就可以重新刷新延长操作时间。

代码流程

过滤器类

1、在zuul网关中建一个属性cookie时间的类,然后去继承zuulfilter网关拦截器类

在这里插入图片描述

工具类

2、在shop-common公共服务里面加上这个CookieUtil工具类

注意:在zuul-server服务想用到shop-common服务的类,需要引入该服务的依赖
在这里插入图片描述

在这里插入图片描述

过滤判断

3、然后写代码,获取请求request中的值,然后再CookieUtil类里面判断请求的cookie是否和登录的时候设置的cookie的name一样,一样的话就给cookie延长登录时间

在这里插入图片描述

注意:这个userToken就是我们之前登录方法doLogin里面设置cookie的name的名称
在这里插入图片描述

4、CookieUtil里面的判断方法,获取cookie的value值
在这里插入图片描述

远程调用feign接口

5、需求:获取到cookie之后,就需要远程调用服务(会员服务)进行redis过期时间的刷新,这个刷新的操作要在会员服务里面操作

zuul网关远程调用会员服务

feign远程调用接口

这个@FeignClient(name = “member-server”)表示调用这个接口的时候,走的服务就是这个叫member-server的会员服务
在这里插入图片描述

熔断降级类
在这里插入图片描述

远程调用的时候,这个降级是默认关闭的,所以我们要去给他设置为打开状态

gitee 配置

在gitee的zuul-server.yml这个服务配置里面设置
在这里插入图片描述

6、然后就需要去实现这个feign的api接口了,要在会员服务里面实现

feign接口写在服务 member-api 那里,接口实现写在member-server服务那里

feign远程调用接口

在这里插入图片描述
在这里插入图片描述

接口实现

在这里插入图片描述
zuul网关要远程调用会员服务,那么在启动类要贴@EnableFeignClients注解

在这里插入图片描述

过滤器run方法

延长redis过期时间和cookie的过期时间

在这里插入图片描述

测试:

查看redis的过期时间
每次操作页面,看过期时间有没有被刷新
在这里插入图片描述
查看cookie的过期时间

在这里插入图片描述

问题:

1、发现刷新页面并不会走这个过滤器的代码,没有刷新redis和cookie的过期时间

解决:原来是忘记给这个过滤器类加上这个@Component注解,实现bean注入
在这里插入图片描述
刷新页面后,也会刷新redis的过期时间了
在这里插入图片描述
cookie的时间也刷新了
在这里插入图片描述

2、为什么刷新页面,就会走这个CookieRefreshFilter类里面的代码。

解答:

因为这个CookieRefreshFilter类继承了ZuulFilter类,所以在服务请求zuul网关进行路由的时候,就会走这个过滤器类。

实现过滤器很简单,只需要继承 ZuulFilter 类,并实现 ZuulFilter 中的抽象方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值