当前位置: 首页 > news >正文

springboot_04

1. 登录优化 - Redis 思路分析

  • 目标:在登录逻辑中加入 Redis,实现 token 主动失效。

  • 背景:用户修改密码后,旧 token 仍可用,存在安全隐患。

  • 思路:

    1. 登录成功后,将生成的 JWT token 保存到 Redis,过期时间与 JWT 一致。

    2. 请求时,除验证 JWT,还要验证 Redis 是否存在该 token。

    3. 修改密码或退出登录时,从 Redis 删除 token,强制失效。

  • 优缺点:

    • 优点:即使 JWT 没过期,也能随时失效。

    • 缺点:增加 Redis I/O,略微增加开销。

2. Spring Boot 集成 Redis

  • 引入依赖:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
  • 配置application.yml

    spring:data:redis:host:localhostport:6379
  • 使用示例:

    @AutowiredprivateStringRedisTemplatestringRedisTemplate;stringRedisTemplate.opsForValue().set("username","zjf");stringRedisTemplate.opsForValue().set("id","1",15,TimeUnit.SECONDS);

3. Redis 主动失效机制实现

  • 登录成功后保存 token 到 Redis:

    stringRedisTemplate.opsForValue().set(token,username,expireTime,TimeUnit.MILLISECONDS);
  • 拦截器流程:

    1. 拦截请求,获取 header 的 token。

    2. 校验 JWT 是否有效。

    3. 校验 Redis 中是否存在该 token。

    4. 均通过才放行,否则拒绝访问。

  • 主动注销:如用户修改密码或退出登录时,Redis 删除对应 token。

4. Spring Boot 部署与多环境配置

  1. 部署:

    • mvn clean package打包 jar。

    • Linux 上使用nohup java -jar xxx.jar &启动。

    • 配置日志输出、Nginx 代理等。

  2. 多环境配置:

    • 创建application-dev.ymlapplication-prod.yml等文件。

    • application.yml中使用spring.profiles.active=dev切换环境。

    • 使用@Profile注解加载不同配置或 Bean。

  3. @ConfigurationProperties

    • 使用@ConfigurationProperties将配置绑定到 Java 类。

    • 保证配置集中管理,便于维护。

http://www.cnnetsun.cn/news/1339973.html

相关文章:

  • SpringBoot_05 复盘总结笔记
  • ChatGPT读文献:技术原理与高效科研实践指南
  • 安防监控系统季度维护清单(含红外报警+门禁联动):附可打印检查表
  • MGeo地址结构化模型企业应用:挪车报警系统中的精准定位提效实践
  • 跨平台算命APP源码开发:UniApp框架与微信小程序双端部署的命理服务解决方案
  • Java基础语法学习与应用
  • 2026年备考软考有什么学习刷题的APP?
  • 2026年最新成人零基础电子鼓避坑指南:家用静音不扰民
  • Git误操作急救手册:拯救代码全攻略
  • 破除医疗流程图协作壁垒:drawio-desktop的格式桥接技术与实践指南
  • 怎么选一家靠谱的密度板运营中心 凯跃木业
  • 收藏!小白程序员快速入门:AI Agent开发核心知识体系梳理
  • python+Ai技术的旅游攻略分享平台_
  • Ollama部署本地大模型:translategemma-12b-it在国际学校双语教材智能批改中的应用
  • Qwen2-VL-2B-Instruct开发利器:IntelliJ IDEA插件开发与模型API调试技巧
  • 单模 vs 多模光纤:如何根据传输需求选择合适的光纤类型?
  • Neo4j实战-跨版本数据迁移全流程解析
  • 机械毕业设计选题指南:从工程问题到技术实现的选题方法论
  • Video2X开源工具Vulkan初始化失败终极解决方案
  • SUPER COLORIZER与传统算法对比:基于LSTM的色彩预测与扩散模型色彩生成
  • Phi-3-Mini-128K入门必看:streaming=True对长文本生成体验的提升
  • Baichuan-M2-32B医疗大模型部署实战:基于vLLM的GPTQ-Int4量化配置指南
  • Redis安全配置实战:如何用protected-mode和bind保护你的数据库(附常见误区解析)
  • k3s+TailScale(伪)一键部署脚本
  • 智慧教室解决方案:口罩检测+考勤系统的低代码集成
  • 专业级英雄联盟皮肤切换工具R3nzSkin实战指南:从源码编译到安全配置
  • 别让AI“失忆“!OpenClaw三步打造靠谱的长期记忆架构
  • 桩网储光融合:充电桩行业的未来十年,看这十大关键判断
  • 基于三菱PLC与三菱触摸屏的水塔水位联机仿真:探索自动化控制的乐趣
  • Qwen-Image-Edit与Python集成:自动化图像处理流水线搭建