微服务Token鉴权设计的几种方案 📅 发布时间:2026/7/13 23:02:01 👁️ 浏览次数: Token透传不推荐刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权但我认为这种方式不是很妥当。接着往下看这种方式通过透传Token使得各微服务都能获取到当前登录人信息在代码编写上确实可能会方便但我认为这不是一种很好的设计方式。原因一内部API与外部API混合在一起不太好区分。原因二内部换句话说B服务提供API时不因该关心当前是否为登录状态登录状态应该由路由中的第一个服务校验维护在调用后续服务时应该显示的传入相关参数。比如以下场景场景一用户签到添加积分场景二后台管理员给用户手动添加积分场景三分布式调度批量增加用户积分根据需求积分服务提供了一个给用户添加积分的API如果你的API是通过获取的当前登录用户ID增加的积分那么面对场景二时你需要重新编写一个给用户添加积分的API因为当前登录的是后台管理员而不是用户代码复用率较低不透传数据显示的提供入参路由到达的第一个服务已经对Token进行了解析认证并将userId显示的传递给了后续服务后续服务不需要再对token进行解析认证。根据1.1的三个场景只需要提供一个入参包含userId的API保证了函数的原子性提供代码复用率。注意: 提供的API不能暴露给外网我们需要在路径上做区分避免外网非法访问内部API。我统一授权统一授权是指将API鉴权集中在应用网关上Fegin内部调用方式Spring Cloud Gateway Fegin内部调用集中在Gateway上做统一认证鉴权鉴权后在请求头中添加鉴权后的信息转发给后续服务如userId等。。。缺点A服务调用B服务时B服务需要写一个内部调用的Controller接口A服务才能通过Fegin调用到B服务增加了代码量这里的设计方案是内部调用与外部调用Controllway上做统一认证鉴权鉴权后在请求头中添加鉴权后的信息转发给后续服务如userId等。。。优点与第一种相比不需要额外编写一个Controller接口只有本地service与远程DubboService的区别代码更简洁。缺点项目技术栈略微增加了复杂度。Spring Boot Web Dubbo内部调用方式这里的设计方案直接去掉了Gateway直接使用了一个Spring Boot Web项目来代替Gateway。但需要注意的是应该将Web项目的容器换成Undertow因为Tomcat是阻塞式的容器不换也不是不行但吞吐量可能会少一下Undertow是非阻塞式的容器可以与Gateway到达相同的效果。非阻塞式当请求为线程进入阻塞状态时当前线程会被挂起当前的计算资源会去做别的事情当被挂起的线程收到响应时才会被况业务服务只需要考虑Dubbo线程池的使用情况。缺点没办法通过配置中心动态调整路由。比如说增加了一个服务Gateway可以不重启通过配置中心增加路由配置即可。非统一授权非统一授权不在应用网关上集成鉴权网关只有单一的路由转发业务。各位服务都有自己的鉴权方式当然也可以通过jar包的方式统一各服务的鉴权方式。常规模式通过编写通用的鉴权模块各服务集成该模块。该模块具备以下功能JWT Token解析权限校验拦截缓存本地缓存\Redis缓存这种模式更适合大型项目团队可能各微服务都由一个项目组负责。各服务维护自己的权限规则这里指的是权限规则数据规则是统一的该模式下由于应用网关比较轻量级不再涉及复杂的鉴权流程使得项目部署可以更灵活当我们使用K8S部署项ngress网关通过应用网关Service的负载均衡调用应用网关应用网关需要通过注册中心获取服务注册列表通过服务注册列表负载均衡到后续服务。与K8S集成我们再来看看将应用网关替换成K8S中的Ingress网关的完整链路这里不仅只是去掉了应用网关同时我们通过K8S Service 负载均衡的能力去掉了注册中心。减少了我们部署微服务时还要额外搭建一套注册中心。同时减少了一层没必要的转发。至于K8S中的Service大家可以理解成一个本地的host假域名比如我们在K8S给商品创建一个Service名称为goods-svc。那么我们可以通过goods-svc直连。如http://goods-bo://goods-svc:20880方案没有对错选择适合自己的就是最好的。
在不确定中寻找可能性:重思“量子原住民”的教育哲学 在不确定中寻找可能性:重思“量子原住民”的教育哲学作者:方见华机构:世毫九实验室(Shardy Lab)邮箱:shardylabsina.com当“量子”一词从物理实验室走向教育语境,它不再仅指微观粒子的叠加与纠缠… 2026/7/10 6:05:15
Mybatis相关面试题 MyBatis高频面试题全解析(含原理实战避坑) MyBatis作为Java后端核心持久层框架,是面试中必问的重点模块。本文整理了MyBatis从基础概念、核心原理到实战应用、性能优化的全维度高频面试题,结合业务场景给出精准回答思路࿰… 2026/7/13 11:40:35
通义千问Qwen的核心能力,适用场景与优势是哪些? 通义千问是什么?通义千问(Tongyi Qwen)是阿里巴巴自主研发的大规模语言模型系列,现已统一简称为“千问”(Qwen)。 它不仅是一个能够回答问题、进行对话的AI助手,更是一个包含了多种尺寸、多种模… 2026/7/13 17:02:54
全流程质检+大数据定价省心又靠谱,交易二手手机上转转 当下二手循环经济快速发展,出手闲置、选购二手物品已经成为大众消费常态。但线下交易和个人交易存在诸多隐患:没有统一质检标准、现场随意压价、手机/平板等数码产品个人数据无法安全清除,全程缺乏保障。于是,越来越多消费者更倾向… 2026/7/14 16:03:36
适合长期挂OpenClaw不关机的电脑有哪些?7×24小时稳定运行主机推荐 依靠OpenClaw处理批量自动化业务的自由从业者、跨境商家,需要设备全天不间断运行,一旦中途死机、断网,几小时甚至一整天的任务进度直接作废,因此筛选适合长期挂OpenClaw不关机的电脑成为刚需。长期挂机对硬件耐久、网络容错、能耗… 2026/7/14 16:03:36
DLSS Swapper:3分钟学会游戏性能优化,新手也能轻松掌握 DLSS Swapper:3分钟学会游戏性能优化,新手也能轻松掌握 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否厌倦了游戏帧率不稳定、画面闪烁的问题?DLSS Swapper正是为解决这一痛点… 2026/7/14 16:01:35
Codex与DeepSeek国内直连:AI代码生成从安装到实战全流程 Codex从安装到实战:国内直连DeepSeek全流程详解最近在AI编程助手领域,Codex与DeepSeek的结合使用越来越受到开发者关注。作为一款强大的代码生成工具,Codex能够显著提升开发效率,而DeepSeek提供的API服务让国内用户也能便捷访问。… 2026/7/14 15:59:33
3分钟快速部署:如何用AI多智能体打造你的专属股票分析平台 3分钟快速部署:如何用AI多智能体打造你的专属股票分析平台 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 还在为复杂的金融量化系统… 2026/7/14 15:59:33
ChatGPT订阅制陷阱曝光:3类定价模型的LTV/CAC临界点计算公式(附可编辑Excel模板) 更多请点击: https://codechina.net 第一章:ChatGPT订阅制陷阱的本质解构 订阅制并非单纯的价格策略,而是一套嵌入产品设计、用户心理与数据闭环的系统性架构。其本质在于将AI能力从“按需调用”的工具属性,悄然重构为“持续付费… 2026/7/14 15:59:33
XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南 1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am… 2026/7/14 0:05:14
2026普通文员学数据分析的价值 一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a… 2026/7/14 0:05:14
2026从计划员到主管,生产管理者学数据分析有用吗? 一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&… 2026/7/14 0:05:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41