首页 > 其他分享 >网关配置类,拦截和解析token

网关配置类,拦截和解析token

时间:2023-09-20 11:25:30浏览次数:35  
标签:网关 return chain exchange token flag 解析 response

 

 


@Component @Slf4j public class AuthorizeFilter implements GlobalFilter , Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); //1,判断是不是登录操作,如果是,就直接方行 String uri = request.getURI().getPath(); if(StringUtils.isNotBlank(uri) && uri.contains("/login")){ return chain.filter(exchange); } //2,判断是否有token String token = request.getHeaders().getFirst("token"); if (StringUtils.isBlank(token)){ response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } boolean flag = true; try { //判断token是否过期 Claims claims = AppJwtUtil.getClaimsBody(token); //解析token结果,判断是否为空 int result = AppJwtUtil.verifyToken(claims); if (result==1 || result==2){ flag=false; } } catch (Exception e) { e.printStackTrace(); flag = false; } log.warn("token是否有效{}",flag); if (flag){ return chain.filter(exchange); }else { response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } }
//执行优先级,-1表示最高 @Override public int getOrder() { return -1; } }

  

标签:网关,return,chain,exchange,token,flag,解析,response
From: https://www.cnblogs.com/liyongliangs/p/17716830.html

相关文章

  • token生成与解析
    publicclassAppJwtUtil{//TOKEN的有效期一天(S)privatestaticfinalintTOKEN_TIME_OUT=3_600;//加密KEYprivatestaticfinalStringTOKEN_ENCRY_KEY="MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY";//最小刷新间隔(S)privatestat......
  • Python异步编程高并发执行爬虫采集,用回调函数解析响应
    一、问题:当发送API请求,读写数据库任务较重时,程序运行效率急剧下降。异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用,经常面临对外发送网络请求,调用外部接口,或者不断更新数据库或文件等操作。这这些操作,通常90%以上时间是在等待,如通过REST,gRPC向服务器发送请......
  • UDP组播接收端解析
    https://blog.51cto.com/u_4042309/3602677网络中的一台主机如果希望能够接收到来自网络中其它主机发往某一个组播组的数据报,那么这么主机必须先加入该组播组,然后就可以从组地址接收数据包。在广域网中,还涉及到路由器支持组播路由等,但本文希望以一个最为简单的例子解释清楚协议......
  • 探秘移动端BI:发展历程与应用前景解析
    什么是移动端BI维基百科上对于移动端商业智能的定义是这样的>MobileBIisasystemthatpresentshistoricalandreal-timeinformationonmobiledevicesforeffectivedecision-makingandmanagementsupport.Itenablesanalysisonsmartphonesandtablets,lead......
  • Vue3 watch揭秘:基本用法与原理深度解析
    Vue3中的watch函数用于监听数据的变化,当数据发生变化时,可以执行一些操作。watch函数的基本用法如下:import{ref,watch}from'vue';exportdefault{setup(){constcount=ref(0);watch(count,(newValue,oldValue)=>{console.log(`count的新值为:${......
  • 第05章-自定义函数和JSON数据解析
    目录5.1实现自定义UDF25.2实现自定义UDTF35.3实现自定义UDAF45.4解析JSON数据65.4.1解析OBJECT数据65.4.2解析ARRAY数据75.4.3禁止使用get_json_object函数8第05章自定义函数和JSON数据解析自定义函数简介有一些sql很难处理的逻辑,我们可以使用自定义函数去处理。比......
  • 深入解析 MySQL 中的字符串处理函数:RIGHT()、LEFT() 和 CHAR_LENGTH
    在MySQL数据库中,字符串处理是一个常见的任务,特别是当你需要从字符串中提取特定部分或者计算字符串的长度时。我们在之前的博文中已经介绍过SUBSTRING_INDEX()、SUBSTRING_INDEX()、SUBSTRING_INDEX(),感兴趣的朋友了可以翻一下我们之前的博文;在本文中,我们将深入探讨三个重要的字......
  • 初中解析几何 - 斜率
    斜率公式一当直线的倾斜角为α(α≠90°)时,直线的斜率k=tanα。 斜率公式二当直线不与x轴垂直(倾斜角α≠90°)时,任取直线上两点A(a,b)、B(c,d),直线斜率k=(d-b)/(c-a)或k=(b-d)/(a-c)。 倾斜角90度,斜率不存在倾斜角0度,斜率为0 参考直线倾斜角与直线的斜率公式(baidu.com......
  • Java线程池解析及状态监控
    1、线程与线程池 我们可以使用newThread()的方式创建一个线程,一个线程的生命周期如下图所示,通过这种方式创建线程会造成消耗大量的资源,同时也无法进行线程的管理。所以在实际开发生产过程中,遇到异步或者并发场景多采用线程池的方案进行业务。2、线程池的创建及工作流程 ......
  • ScannerException: while scanning for the next token found character ‘@‘ 问题
    1.今天运行程序,突然报错,显示 ScannerException:whilescanningforthenexttokenfoundcharacter‘@‘问题,上网搜索,有好多原因,最简单的解决方法是刷新maven,后来就好使了。其他原因可参考博客:ScannerException:whilescanningforthenexttokenfoundcharacter‘@‘问......