2026-01-29 JWT过期时间设置不生效:从"7d"到"7h"的深夜调试实录 JWT过期时间设置不生效:从"7d"到"7h"的深夜调试实录 正文:凌晨三点的屏幕荧光刺得眼睛生疼,咖啡杯早已见底。我盯着控制台输出的JWT令牌,第37次尝试将过期时间从"7d"改成"7h",可解码后的exp字段依然固执地显示七天后过期。这问题像一根卡在喉咙的鱼刺——看似简单,却让人寝食难安。第一幕:迷雾中的配置项项目采用Node.js+Express架构,JWT签发逻辑封装在authService.js中:javascript const token = jwt.sign( { userId: user.id }, process.env.JWT_SECRET, { expiresIn: '7h' } // 明明改成了7小时 );环境变量通过dotenv加载,.env文件赫然写着:ini JWT_EXPIRES_IN=7h JWT_SECRET=my_super_secret甚至尝试硬编码:javascript { expiresIn: '7h' } // 直接写死参数但用https://jwt.io解码后,过期时间仍是604800秒(7天)。这见鬼的7d阴魂不散!第二幕:依赖库的暗箭排查进入死... 2026年01月29日 36 阅读 0 评论
2026-01-13 SpringBoot应用:命令行参数覆盖多配置项的正确实践 SpringBoot应用:命令行参数覆盖多配置项的正确实践 正文:在Spring Boot应用的运维场景中,命令行参数是动态调整配置的高效手段。但面对复杂的多层级配置(如嵌套application.yml或多Profile场景),如何正确覆盖特定配置项而不影响其他参数?这需要深入理解Spring Boot的配置加载机制。一、配置加载优先级的核心逻辑Spring Boot的配置源按以下顺序生效(优先级从高到低):1. 命令行参数(--key=value形式)2. JNDI属性3. Java系统属性(System.getProperties())4. 操作系统环境变量5. Profile专属配置文件(如application-dev.yml)6. 主配置文件(application.yml或application.properties)关键点在于:命令行参数仅覆盖明确指定的配置项,未指定的参数仍保留原有配置。二、实战:命令行覆盖嵌套配置假设应用需要动态修改数据库连接和日志级别:原始配置(application.yml)spring: datasource: url: jdbc:mysql://localhost:3306/defa... 2026年01月13日 43 阅读 0 评论