spring集成jwt、权限从jwt拿还是从网关拿好
文章目录引入依赖0.12(较新)0.7(过时)boot项目中应用配置文件中添加拦截器配置jwt拦截器LoginController权限从jwt直接拿还是从网关拿好?单应用为什么难做jwt?经过网关校验jwt为什么直接在header中添加jwt不生效?问题jwt是明文吗?那么还安全吗?引入依赖0.12(较新)dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt-api/artifactIdversion0.12.5/version/dependencydependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt-impl/artifactIdversion0.12.5/versionscoperuntime/scope/dependencydependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt-jackson/artifactId!-- 用于 JSON 序列化 --version0.12.5/versionscoperuntime/scope/dependency0.7(过时)pom.xml添加dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.7.0/version/dependencydependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion3.2.0/version/dependencyboot项目中应用配置文件中添加jwt:secret:MySuperSecretKeyForJWTTokenGeneration2026VeryLongString# 至少32个字符expiration:86400000# 24小时毫秒拦截器配置ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{AutowiredprivateJwtInterceptorjwtInterceptor;OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(jwtInterceptor).addPathPatterns(/**).excludePathPatterns(/login/login);}}jwt拦截器ComponentpublicclassJwtInterceptorimplementsHandlerInterceptor{AutowiredprivateJwtUtiljwtUtil;OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler){Stringtokenrequest.getHeader(Authorization);if(tokennull||!token.startsWith(Bearer )){thrownewRuntimeException(未登录);}// 截取 Bearer 后面的真实 Tokentokentoken.substring(7);if(!jwtUtil.validateToken(token)){thrownewRuntimeException(Token 已过期或无效);}// 解析并获取用户信息存入 request 供后续 Controller 使用LonguserIdjwtUtil.getUserId(token);request.setAttribute(userId,userId);returntrue;}}LoginControllerRestControllerSlf4jRequestMapping(/login)publicclassLoginController{AutowiredprivateJwtUtiljwtUtil;RequestMapping(/login)publicStringlogin(Stringusername){// 1. 查库校验用户名密码省略具体查询逻辑// 2. 生成 JWT TokenreturnjwtUtil.generateToken(111l,username,admin);}GetMapping(/profile)publicJsonResultgetProfile(HttpServletRequestrequest){LonguserId(Long)request.getAttribute(userId);log.info(userId{},userId);// 根据 userId 查询业务数据...returnJsonResult.ok(userId);}}用法1、postman先调用login接口 # 拿到jwt2、post调用profile接口header里添加AuthorizationBearer jwt值能够反向拿到userId即可。权限从jwt直接拿还是从网关拿好?公司用的是网关拿jwt然后提取信息放到header中对比维度从JWT直接拿胖JWT模式从网关拿瘦JWT网关鉴权模式核心机制JWT的Payload中直接携带用户的角色或权限列表下游微服务自行解析并校验。JWT保持精简仅含核心标识API网关负责验签并将解析出的用户信息放入Header透传给下游。性能与扩展纯本地计算性能极高服务间无需通信验证水平扩展零成本。网关需承担签名验证和IO开销高并发下易成性能瓶颈网关宕机存在单点故障风险。开发与维护各微服务需独立引入并维护鉴权逻辑如SpringSecurity重复代码多。下游服务只需读取Header明文职责分离代码简洁维护成本低。权限实时性无法实时撤销权限变更或封号需等JWT自然过期才失效。支持动态实时权限网关可结合Redis黑名单等实现权限秒级生效和强制登出。网络与体积权限多时Token体积膨胀浪费带宽易超出HTTPHeader限制导致请求失败。Token保持轻量避免了携带庞大权限列表减少网络开销。安全与隐私Payload仅Base64编码完整的用户权限画像存在被解码泄露的风险。敏感权限数据无需暴露在公网传输的Token中相对更安全。单应用为什么难做jwt?其实并不是难做而是分布式不好做。jwt本身无状态但是可以jwt外挂状态这样网关只用维护一套机制。如果是微服务那会有分布式噩梦例如有10个微服务就要维护10套redis还要保持同步这成本就有点高。经过网关校验jwt为什么直接在header中添加jwt不生效?一开始也懵了后来才发现网关地址和直接项目地址不一样。网关的作用拦截并验签解析jwt并将用户信息传给下游。https://www.ttt.com # 非网关地址之前在这里面加的header没有经过网关当然也不会解析jwthttps://www.ttt.com/gateway # 网关地址把请求地址换成这个jwt就生效了。问题jwt是明文吗?那么还安全吗?是明文谁拿到后都可以解出信息。那么还安全吗?安全明文虽然可以看到但是如果密钥验证不通过可以拦下来通过权还是牢牢的掌控在自己手里。

相关新闻

《深入理解java虚拟机》第一章:从Sun Classic到现代JVM的演进之路

《深入理解java虚拟机》第一章:从Sun Classic到现代JVM的演进之路

1.4 Java虚拟机发展史上一节我们从整个Java技术的角度观察了Java 技术的发展,许多Java程序员都会潜意识地把它与Sun公司的HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA.JRockit和IBM J9,但对JVM的认识不仅仅只有这些。从1996年初Sun…

2026/10/10 17:42:55 阅读更多 →
计算时间复杂度

计算时间复杂度

时间复杂度详解:从概念到实践摘要:本文系统讲解时间复杂度的核心概念、计算方法和常见示例,帮助读者掌握算法效率分析的基本方法。通过清晰的步骤说明和Java代码示例,深入理解O(1)、O(n)、O(n)、O(log n)等常见时间复杂度。一、时…

2026/10/10 17:43:10 阅读更多 →
漫画:什么是时间复杂度?

漫画:什么是时间复杂度?

一、引言:时间复杂度的意义时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大…

2026/10/10 17:43:11 阅读更多 →

最新新闻

植物叶片分割数据集构建与训练全指南:从标注到模型落地

植物叶片分割数据集构建与训练全指南:从标注到模型落地

简介:这份资源面向从事计算机视觉与图像分割研究的开发者、学生及算法爱好者,提供一套植物叶片分割数据集,可用于训练和验证语义分割模型,解决植物表型分析、叶片区域提取等场景下的数据获取问题。压缩包共222个文件,以…

2026/10/11 22:06:50 阅读更多 →
基于知识图谱的Python电影推荐系统:毕业设计实战与可解释性方案

基于知识图谱的Python电影推荐系统:毕业设计实战与可解释性方案

简介:这是一套面向计算机相关专业毕业设计场景的Python电影推荐系统源码,采用知识图谱架构,融合协同过滤算法,可有效缓解传统推荐系统的冷启动问题。项目难度中等,适合作为课程作业、学期综合实践或自学训练素材&#…

2026/10/11 22:06:50 阅读更多 →
电商评论文本挖掘:从LDA情感分析到销量预测的完整链路

电商评论文本挖掘:从LDA情感分析到销量预测的完整链路

简介:这是一份面向电商评论分析初学者的完整文本挖掘实践项目,聚焦手机评论数据,覆盖数据预处理、LDA主题模型、情感极性判断与程度计算、回归模型预测销量排序四大核心流程。预处理阶段实际包含去除特殊符号、小写化、停用词过滤、分词与词形…

2026/10/11 22:06:50 阅读更多 →
基于Pytorch的DualGAN图像去雾实战:原理、训练与避坑指南

基于Pytorch的DualGAN图像去雾实战:原理、训练与避坑指南

简介:基于PyTorch实现对偶生成对抗网络来完成图像去雾,是一份完整可运行的高分毕业设计项目,特别适合计算机相关专业正在准备毕设、课程设计或期末大作业的学生,也适合希望进行图像修复实战的学习者。整个压缩包共25个文件&#x…

2026/10/11 22:06:50 阅读更多 →
光伏发电功率预测实战:Python机器学习方案从数据清洗到模型部署

光伏发电功率预测实战:Python机器学习方案从数据清洗到模型部署

简介:基于Python与机器学习的光伏发电功率预测系统,是一套面向高校毕业设计、课程结业及专题研究的应用型项目,适合具备基础Python知识、希望快速上手机器学习预测流程的读者学习参考。资源包共20个文件,以CSV训练与测试数据集、P…

2026/10/11 22:06:50 阅读更多 →
ArtCraft幂等性令牌详解:idempotency_token如何防止你的AI生成任务重复扣费

ArtCraft幂等性令牌详解:idempotency_token如何防止你的AI生成任务重复扣费

ArtCraft幂等性令牌详解:idempotency_token如何防止你的AI生成任务重复扣费 【免费下载链接】artcraft ArtCraft is an intentional crafting engine for artists, designers, and filmmakers 项目地址: https://gitcode.com/GitHub_Trending/ar/artcraft Ar…

2026/10/11 22:05:49 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →