1 创建 IPGlobalFilter
package com.it.filter;import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;/*** 网关里面 通过设置过滤器进行ip拦截* ip拦截:* 请求都有一个来源* 请求-->gateway-->service* 黑名单:具体的业务服务用黑名单* 白名单:访问数据库用白名单,防止别人恶意访问*/
public class IPCheckFilter implements GlobalFilter, Ordered {/*** 网关的并发量比较高,不要在网关里面直接操作mysql* 后台的系统可以查询数据库 用户量  并发量不大* 如果并发量大  可以查看redis  或则在内存中写好*/public static final List<String> BACK_LIST= Arrays.asList("127.0.0.1","192.168.12.115");/*** 1.拿到ip* 2.校验ip是否符合规范* 3.放行或则拦截* @param exchange* @param chain* @return*/@SneakyThrows@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();String ip= request.getHeaders().getHost().getHostString();//查询数据库,看这个ip是否存在在黑名单里面if (!BACK_LIST.contains(ip)){//放行return chain.filter(exchange);}//拦截ServerHttpResponse response = exchange.getResponse();response.getHeaders().set("content-type","application/json;charset=utf-8");HashMap<String, Object> map = new HashMap<>(4);map.put("code", 438);map.put("msg","你是黑名单");ObjectMapper objectMapper = new ObjectMapper();byte[] bytes = objectMapper.writeValueAsBytes(map);DataBuffer wrap = response.bufferFactory().wrap(bytes);return response.writeWith(Mono.just(wrap));}@Overridepublic int getOrder() {return -5;}
}
多个拦截器组成责任链模式,拦截器的数值越小,拦截器越先执行,被上一个拦截器拦截的请求不会传递到下一个拦截器中。
2 gateway做token验证 流程图

一般把token放在请求头里面,请求头里面是key-value结构,key统一设置成Authorization  value统一设置成 bearer token

1.拿到请求的url

2.判断放行

3.拿到请求头

4.拿到token

5.在redis中校验

6.放行或拦截

26.gateway的IP 认证拦截,gateway做token验证 流程图(springcloud)相关推荐

  1. SpringBoot项目使用JWT+拦截器实现token验证

    利用token进行用户身份验证 流程 客户端使用用户名和密码请求登录 服务端收到登录请求,验证用户名和密码 验证成功后,服务端会签发一个token,再把这个token返回给客户端 客户端收到token ...

  2. dio拦截器 flutter_Flutter开发 Dio拦截器实现token验证过期的功能

    前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有"token验证过期"的需求,所以接下来我简单总结一下在Flut ...

  3. json web token没有哪个成分_【分享项目】给你看看我们公司的登录认证是怎么做的?!(SpringBoot+Shiro+Token+Redis)...

    背景交代 以前项目中权限认证没有使用安全框架,都是在自定义filter中判断是否登录以及用户是否有操作权限的.最近开了新项目,搭架子时,想到使用安全框架来解决认证问题,spring security太 ...

  4. 阿联酋esma认证怎么做_百度爱采购企业认证是怎么做的?这些你要知道!

    入驻百度爱采购的企业可以获得认证标识,这个标识是企业品牌树立的重要表现,在产品展示页面和百度首页搜索企业名称都有企业信息的醒目展示,并且可以直接跳转到企业店铺,为企业带来流量的同时,还能进行品牌的宣传 ...

  5. 折腾实现固定IP的服务器BT做种

    通过网络分享资源,是为了让人下载,但由于种种原因,放到商业网盘的资源经常会被删除,于是我只好自建简易的http文件下载服务,比如frp.v2fy.com frp.v2fy.com 内网穿透搭建http ...

  6. 阿里云:通过设置白名单解决因误判IP被拦截问题

    若您发现部分正常业务或者 IP 无法访问,有可能是因为攻击误判导致 IP 被拦截,. 背景信息 例如,您的网络环境为 NAT 环境(即局域网内相关主机共享公网 IP 上网),由于局域网内部分主机因中病 ...

  7. JWT的API鉴权,基于拦截器的token与鉴权

    基于JWT的API鉴权 基于拦截器的token与鉴权 如果我们每个方法都去写一段代码,冗余度太高,不利于维护,那如何做使我们的代码看起来更清爽呢?我们可以  将这段代码放入拦截器去实现 Spring中 ...

  8. 首次用jwt做token

    使用jwt做token时遇到这样的错误 return JWT.create().withHeader(header).withClaim("userId", userId).wit ...

  9. vue ajax拦截器,Vue-resource拦截器判断token失效跳转详解

    本文主要为大家带来一篇Vue-resource拦截器判断token失效跳转的实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 在拦截器中设置全局的 ...

最新文章

  1. 纯真IP数据库的应用!
  2. buuctf 文件中的秘密
  3. 9、使用GROUP BY分组查询
  4. android 响应类型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型...
  5. Eclipse安装Rust插件 (Ubuntu)
  6. python和mt4的区别_MT4和MT5最大的区别在哪里?
  7. linux gulp安装教程,Linux环境NodeJS安装及Gulp安装
  8. Linux编写shell脚本的注意事项
  9. 牛逼神器第三弹--nth_element函数
  10. 川大计算机复试公平吗,看清华、川大这波操作,你还会担心网络复试会不公平吗?...
  11. 转 matlab卷积函数介绍 conv filter conv2
  12. 域名卡密自助授权系统
  13. android同花顺布局,同花顺首发 Android平板电脑炒股高清版
  14. 对计算机网络考研知识点归纳(不断更新中T)
  15. 普歌-nuxt.js基础
  16. 安卓优雅的svg实践绚丽效果
  17. 由于启用计算机,win10由于启动计算机时出现了页面文件配置问题的详细解决方案...
  18. 【NOIP2015提高组Day1】斗地主
  19. Duplicate keys detected: ‘gggggg‘. This may cause an update error.的解决办法
  20. 如何做好服务器的维护

热门文章

  1. u盘插电脑计算机卡了,U盘连接电脑非常卡的解决方法-电脑自学网
  2. caffe学习笔记2:net forward与backward
  3. AndroidStudio无法识别字体文件(*.ttf)问题的解决
  4. SAP中参照采购协议发票校验时带出价格与协议当前价格不一致的案例分析
  5. 10.11-数据库mysql
  6. aruba交换机配置命令_aruba交换机配置-实战篇
  7. ajax success 参数
  8. 电视盒子显示ntp服务器异常,ntp服务器连接异常咋办
  9. Python Web学习笔记,电影网站
  10. 织梦如何更改默认的后台登录账号和密码(亲测可用)