文章内容输出来源:拉勾教育Java高薪训练营
1. 前言
1.1 说明
本文将对案例的判断是否登录以及非业务需求(注册限制)进行实现。
- 在欢迎页面需要获取到登录用户的邮箱信息,这个请求
api/users/info
就要判断下用户是否登录,如果未登录则返回相应信息,让用户可以去登录后再操作 - 在注册页面,一个IP可以注册多次,但也不能让他们无节制的注册。所以需要限制一个IP最多可以注册多少次;一个IP的多次注册不能太频繁,要有时间间隔。
实现的技术将使用GateWay提供的过滤器功能,它能够拦截请求,在请求的前后进行某些机制的处理
1.2 GateWay的过滤器
1.2.1 过滤器生命周期
生命周期主要有两个pre和post
- pre:这种过滤器在请求被路由之前调⽤。我们可利⽤这种过滤器实现身份验证、在集群中选择 请求的微服务、记录调试信息等
- post:这种过滤器在路由到微服务以后执⾏。这种过滤器可⽤来为响应添加标准的 HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
1.2.2 过滤器类型
GateWay的过滤器分为GateWayFilter和GlobalFilter两种
- GateWayFilter:应⽤到单个路由路由上
- GlobalFilter:应⽤到所有的路由上
2. 增加配置信息
2.1 进入nacos控制台,进入配置列表
2.2 在lagou-common-config.yaml
配置文件中增加以下两个配置
- ip.times:表示同一ip的注册次数,这里限制为3次
- ip.seconds:表示同一ip的多次注册请求的最短时间间隔,这里限制为5秒
ip:
times: 3
seconds: 5
3. 修改网关项目
项目是
lagou-cloud-gateway-9002
3.1 pom.xml引入相关依赖
- 引入nacos的配置依赖,需要获取外部配置的ip注册最大次数和ip注册最短时间间隔参数
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>