news 2026/4/3 6:29:09

Day02-12.开发接口功能-分析登录用户传递流程13:16

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day02-12.开发接口功能-分析登录用户传递流程13:16

套路,脚手架,看一眼就行了,没啥技术含量

package com.tianji.gateway.filter; import com.tianji.authsdk.gateway.util.AuthUtil; import com.tianji.common.domain.R; import com.tianji.common.domain.dto.LoginUserDTO; import com.tianji.gateway.config.AuthProperties; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.AntPathMatcher; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import java.util.List; import static com.tianji.auth.common.constants.JwtConstants.AUTHORIZATION_HEADER; import static com.tianji.auth.common.constants.JwtConstants.USER_HEADER; @Component public class AccountAuthFilter implements GlobalFilter, Ordered { private final AuthUtil authUtil; private final AuthProperties authProperties; private final AntPathMatcher antPathMatcher = new AntPathMatcher(); public AccountAuthFilter(AuthUtil authUtil, AuthProperties authProperties) { this.authUtil = authUtil; this.authProperties = authProperties; } @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 1.获取请求request信息 ServerHttpRequest request = exchange.getRequest(); String method = request.getMethodValue(); String path = request.getPath().toString(); String antPath = method + ":" + path; // 2.判断是否是无需登录的路径 if(isExcludePath(antPath)){ // 直接放行 return chain.filter(exchange); } // 3.尝试获取用户信息 List<String> authHeaders = exchange.getRequest().getHeaders().get(AUTHORIZATION_HEADER); String token = authHeaders == null ? "" : authHeaders.get(0); R<LoginUserDTO> r = authUtil.parseToken(token); // 4.如果用户是登录状态,尝试更新请求头,传递用户信息 if(r.success()){ exchange.mutate() .request(builder -> builder.header(USER_HEADER, r.getData().getUserId().toString())) .build(); } // 5.校验权限 authUtil.checkAuth(antPath, r); // 6.放行 return chain.filter(exchange); } private boolean isExcludePath(String antPath) { for (String pathPattern : authProperties.getExcludePath()) { if(antPathMatcher.match(pathPattern, antPath)){ return true; } } return false; } @Override public int getOrder() { return 1000; } }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 5:07:13

亲测好用10个AI论文网站,助你轻松搞定本科毕业论文!

亲测好用10个AI论文网站&#xff0c;助你轻松搞定本科毕业论文&#xff01; AI 工具如何让论文写作更轻松&#xff1f; 在当今这个信息爆炸的时代&#xff0c;越来越多的本科生开始借助 AI 工具来辅助自己的学术写作。尤其是在论文写作过程中&#xff0c;AI 不仅能帮助学生快…

作者头像 李华
网站建设 2026/3/24 16:15:08

(新卷,100分)- 德州扑克(Java JS Python)

(新卷,100分)- 德州扑克&#xff08;Java & JS & Python&#xff09;题目描述五张牌&#xff0c;每张牌由牌大小和花色组成&#xff0c;牌大小2~10、J、Q、K、A&#xff0c;牌花色为红桃、黑桃、梅花、方块四种花色之一。判断牌型:牌型1&#xff0c;同花顺&#xff1a;…

作者头像 李华
网站建设 2026/4/3 5:07:49

网站建设完整指南:从零开始到跨平台部署

网站建设是指通过规划、设计、开发、测试和部署等一系列流程&#xff0c;创建一个可以通过互联网访问的网站。它包含技术实现和内容管理的全过程&#xff0c;是现代企业、组织和个人展示信息、提供服务、进行交流的重要平台。一个完整的网站建设项目通常涉及前端设计、后端开发…

作者头像 李华
网站建设 2026/3/31 11:13:08

计算机毕设Java基于java的停车场管理系统 基于Java技术的智能停车场管理平台设计与实现 Java驱动的停车场综合管理系统开发

计算机毕设Java基于java的停车场管理系统6y05y9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着城市化进程的加速&#xff0c;停车场管理成为城市交通管理中不可或缺的一部…

作者头像 李华
网站建设 2026/3/23 4:37:51

“Vibe编程“或危害开源软件生态系统发展

Tailwind Labs首席执行官Adam Wathan最近将裁员三名员工归咎于AI工具的影响。 Tailwind Labs负责监督开源Tailwind CSS框架的开发。据Wathan称&#xff0c;AI编程工具影响了公司与客户之间的联系&#xff0c;导致网站流量减少&#xff0c;进而影响了产品曝光度。 "尽管Tai…

作者头像 李华
网站建设 2026/3/31 11:06:44

计算机毕设java和vue的学生宿舍管理系统 基于 Java 和 Vue 的学生宿舍管理系统 构建高效便捷的宿舍管理平台

计算机毕设java和vue的学生宿舍管理系统bb1dr9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着互联网技术的飞速发展&#xff0c;高校学生宿舍管理逐渐从传统的人工管理模…

作者头像 李华