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/8/11 16:15:05 阅读更多 →
计算时间复杂度

计算时间复杂度

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

2026/8/11 16:15:05 阅读更多 →
漫画:什么是时间复杂度?

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

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

2026/8/11 16:15:05 阅读更多 →

最新新闻

AI Loop架构解析:从单次指令到自主循环的智能体实现

AI Loop架构解析:从单次指令到自主循环的智能体实现

1. 项目概述:从“指令执行”到“自主循环”的范式跃迁最近和几个做AI应用的朋友聊天,大家普遍有个感觉:现在的AI模型,无论是GPT-4还是Claude,单次对话能力已经很强了,但总感觉“差点意思”。比如&#xff0…

2026/8/12 19:03:47 阅读更多 →
信号链FAE实战能力解析:从ADC、运放非理想特性到SPI深度调试

信号链FAE实战能力解析:从ADC、运放非理想特性到SPI深度调试

1. 从一场笔试看信号链FAE的实战能力画像 最近帮朋友复盘了一场圣邦微电子的FAE(现场应用工程师)岗位笔试,题目聚焦在信号链领域。虽然朋友最终没有拿到具体的题目原文,但根据他回忆的核心考察方向,结合我们讨论时梳理…

2026/8/12 19:03:47 阅读更多 →
2023年计算机网站建设实训总结:从零基础到全栈开发的全方位深度复盘与经验沉淀

2023年计算机网站建设实训总结:从零基础到全栈开发的全方位深度复盘与经验沉淀

计算机网站建设实训总结时光如白驹过隙,转眼间,为期几个月的计算机网站建设实训课程已经画上了句号。此刻,坐在电脑前敲下这段文字,我的内心充满了复杂的感触。有完成任务后的如释重负,有面对代码报错时的焦虑与挫败,但更多的,是一种通过亲手实践将抽象理论转化为具象成…

2026/8/12 19:03:47 阅读更多 →
如何智能下载HLS流媒体视频:免费开源工具的完整实战指南

如何智能下载HLS流媒体视频:免费开源工具的完整实战指南

如何智能下载HLS流媒体视频:免费开源工具的完整实战指南 【免费下载链接】hls-downloader Web Extension for sniffing and downloading HTTP Live streams (HLS) 项目地址: https://gitcode.com/gh_mirrors/hl/hls-downloader 你是否经常遇到想要保存在线视…

2026/8/12 19:03:47 阅读更多 →
基于MCP协议构建手机AI智能体:Claw Agent与Android深度集成实战

基于MCP协议构建手机AI智能体:Claw Agent与Android深度集成实战

1. 项目概述:Claw Agent MCP 是什么,以及我为什么折腾它 最近在折腾一个叫 Claw Agent 的玩意儿,它本质上是一个智能体(Agent)框架,可以帮你处理各种任务,比如写代码、查资料、规划日程。但真正…

2026/8/12 19:03:46 阅读更多 →
中兴B860AV2.1-T机顶盒线刷当贝桌面全流程与避坑指南

中兴B860AV2.1-T机顶盒线刷当贝桌面全流程与避坑指南

1. 项目概述:中兴B860AV2.1-T 3.0机顶盒的“新生”之路 手头有一台中兴B860AV2.1-T 3.0的机顶盒,这玩意儿是运营商定制版的典型产物。开机慢、预装应用多且无法卸载、桌面臃肿、各种限制……相信折腾过这类盒子的朋友都深有体会。它本质上是一台搭载了Am…

2026/8/12 19:02:40 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →