登录的问题:

用户两次登录后会生成新旧两个令牌,此时旧的不应该生效

要使旧的失效:

令牌主动失效机制
登录成功后,给浏览器响应令牌的同时,把该令牌存储到redis中
LoginInterceptor拦截器中,需要验证浏览器携带的令牌,并同时需要获取到redis中存储的与之相同的令牌
当用户修改密码成功后,删除redis中存储的旧令牌

登录优化-redis SpringBoot集成redis

SpringBoot 集成 redis
1导入 spring-boot-starter-data-redis 起步依赖
2.在 yml 配置文件中,配置 redis 连接信息
3.调用 API (StringRedisTemplate) 完成字符串的存取操作

<dependency> 
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>


# application.yml
spring:
data:
redis:
host: localhost
port: 6379


@Test
public void testStringSet(){ 
stringRedisTemplate.opsForValue().set("username","如花");
}

@Test
public void testStringGet(){
stringRedisTemplate.opsForValue().get("username");
}

写一个test

启动redis

运行test后,启动redis客户端

成功获取

不用redis客户端,在idea中获取

成功获取

存储时可以设置过期时间

存储id为1,15秒过期

登录优化-redis 主动失效机制实现

在UserController中注入redis

登录成功时把token存储到redis中并设置过期时间1小时,与令牌过期时间相同

在登录拦截器中也注入redis

验证token是否失效

更新密码时删除redis中存储的token

在更新密码的方法上传入token

更新时删除redis中存储的token

SpringBoot项目部署

项目需要部署到服务器上

开发好的项目需要打成jar包,首先需要配置打包的插件

项目打包

看弹幕提示 </properties> 里面加上<skipTests>true</skipTests>后成功打包

打包好的jar包在target目录下

把自己的电脑当作服务器,在当前文件夹运行cmd

运行

测试

注意: jar包部署,要求服务器必须有jre环境


小结:

1.如何生成 jar 包?
执行 package 命令即可

2.如何运行 jar 包?
Java -jar jar 包位置

3.Jar 包部署对服务器有什么要求?
必须有 jre 环境

SpringBoot属性配置方式

问题:

想改端口为9090,但项目已经打成jar包了,不能直接在yml配置文件中修改

解决:

方法一:命令行参数方式

--键=值        --server.port=9090

端口改为9090

方法二:环境变量方式

在用户变量新建一个server.port变量

重新启动cmd窗口环境变量才会生效

运行后端口是9090

方法三:外部配置文件方式

当前文件夹下创建yml文件

运行

端口成功改为9090

配置的优先级 从上往下依次变高

1.项目中 resources 目录下的 application.yml

2.Jar 包所在目录下的 application.yml

3.操作系统环境变量

4.命令行参数

SpringBoot多环境开发 基本使用

开发、测试、生产三种环境下配置信息是不同的

多环境开发 - Profiles
SpringBoot 提供的 Profiles 可以用来隔离应用程序配置的各个部分,并在特定环境下指定部分配置生效
如何分隔不同环境的配置?
使用三个横杠 ---

如何指定哪些配置属于哪个环境?
spring:
config:
activate:
on-profile: 环境名称

如何指定哪个环境的配置生效?
spring:
profiles:
active: 环境名称

如果 特定环境中的配置和通用信息冲突了,特定环境中的配置生效

下图中虚拟路径/bbb生效

三种环境配置文件写到同一个yml文件中会不好维护

解决:多文件配置

把不同环境的配置信息写到不同文件

在application.yml中指定激活的环境

SpringBoot多环境开发 分组

在一个环境的yml文件中配置多个配置信息也会不好维护

解决:

把不同的配置信息再分成多个yml文件

在application.yml中指定激活的分组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92426.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92426.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92426.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法牢笼与思想飞地:在人工智能时代守卫灵魂的疆域

当手指在键盘上敲下“帮我写一篇关于XX的文章”&#xff0c;当屏幕上的“智能助手”瞬间输出结构完整、引经据典的文字&#xff0c;当算法为我们精准推送“你可能感兴趣”的一切——我们正被一种前所未有的认知便利所包围。然而&#xff0c;在这层包裹着效率与舒适的华丽外衣之…

WebAssembly浏览器指纹识别技术——实验评估与应用展望(下篇)

引言 在上篇文章中,我们详细阐述了基于WebAssembly的浏览器指纹识别技术的理论基础和核心方法。本文将进一步展示该技术在实际应用中的表现,通过大规模的实验验证其有效性,并深入探讨相应的防护策略。同时,我们也将客观分析该技术的应用前景与潜在风险,为相关领域的研究和…

kafka--基础知识点--5.4--max.in.flight.requests.per.connection

一、参数定义 max.in.flight.requests.per.connection 是 Kafka 生产者客户端配置参数&#xff0c;用于控制生产者与单个 Broker 连接中未确认请求的最大数量。简单来说&#xff0c;它限制了生产者在等待之前发送的消息确认&#xff08;ACK&#xff09;时&#xff0c;可以同时向…

【Spring AI 0基础教程】1、基础篇 环境搭建 - 智能天气预报助手

基础篇 | 环境搭建 - 智能天气预报助手 一、什么是 Spring AI Spring AI (https://spring.io/projects/spring-ai)]是 Spring 官方于 2023 年推出的 AI 应用开发框架&#xff0c;它如同 AI 世界的"Spring 生态连接器"&#xff0c;致力于简化开发集成了 AI 功能的应…

深入浅出MyBatis缓存:如何让数据库交互飞起来

深入浅出MyBatis缓存&#xff1a;如何让数据库交互飞起来你是否遇到过这样的场景&#xff1a;系统在高并发下响应缓慢&#xff0c;数据库监控显示CPU飙升&#xff0c;日志里充斥着大量重复SQL&#xff1f;作为开发者&#xff0c;我曾亲眼目睹一个简单的配置查询拖垮整个系统。今…

【计算机考研(408)- 数据结构】绪论

绪论 基本概念&#xff08;理解即可&#xff09; 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别 和处理的符号的集合。数据是计算机程序加工的原料。&#xff08;For Example : 声音/图像/字符串等&#xff09; 数据元…

嵌入式学习-土堆PyTorch(9)-day25

进入尾声&#xff0c;一个完整的模型训练 &#xff0c;点亮的第一个led#自己注释版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

Java变量详解:局部变量、成员变量、类变量区别及使用场景

作为Java开发者&#xff0c;深入理解不同变量的特性是写出高质量代码的基础。本文将为你全面解析三种核心变量类型&#xff0c;并通过实战案例展示它们的正确使用方式。一、变量类型概览 1. 局部变量&#xff08;Local Variable&#xff09; 定义&#xff1a;在方法、构造方法或…

【收集电脑信息】collect_info.sh

收集电脑信息 collect_info.sh #!/bin/bashoutput"info.txt" > "$output"# 1. OS Version echo " 操作系统名称及版本 " >> "$output" lsb_release -d | cut -f2- >> "$output" echo -e "\n" >…

服务器清理空间--主要是conda环境清理和删除

1.查看空间情况 (base) zhouy24RL-DSlab:~/zhouy24Files$ df -h Filesystem Size Used Avail Use% Mounted on udev 252G 0 252G 0% /dev tmpfs 51G 4.9M 51G 1% /run /dev/nvme0n1p3 1.9T 1.7T 42G 98% / tmpfs 252G …

UE5多人MOBA+GAS 26、为角色添加每秒回血回蓝(番外:添加到UI上)

文章目录添加生命值和蓝量的状态标签创建无限GE并应用监听添加和去除标签每秒回复配上UI添加生命值和蓝量的状态标签 添加新的标签 CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Full)CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Empty)CRUNCH_API U…

MetaGPT源码剖析(三):多智能体系统的 “智能角色“ 核心实现——Role类

每一篇文章都短小精悍&#xff0c;不啰嗦。今天我们来深入剖析Role类的代码实现。在多智能体协作系统中&#xff0c;Role&#xff08;角色&#xff09;就像现实世界中的 "员工"&#xff0c;是执行具体任务、参与协作的基本单位。这段代码是 MetaGPT 框架的核心&#…

【项目经验】小智ai MCP学习笔记

理论 1、什么是MCP MCP(Model Context Protocol&#xff0c;模型上下文协议)是一种开放式协议&#xff0c;它实现了LLM与各种工具的调用。使LLM从对话、生成式AI变成了拥有调用三方工具的AI。用官方的比喻&#xff0c;MCP就是USB-C接口&#xff0c;只要实现了这个接口&#x…

Matlab学习笔记:矩阵基础

MATLAB学习笔记:矩阵基础 作为MATLAB的核心,矩阵是处理数据的基础工具。矩阵本质上是一个二维数组,由行和列组成,用于存储和操作数值数据。在本节中,我将详细讲解矩阵的所有知识点,包括创建、索引、运算、函数等,确保内容通俗易懂。我会在关键地方添加MATLAB代码示例,…

技术演进中的开发沉思-38 MFC系列:关于打印

打印程序也是MFC开发中不能忽视的一个环节&#xff0c;现在做打印开发so easy。但当年做打印开发还是挺麻烦。在当年的桌面程序里就像拼图的最后一块&#xff0c;看着简单&#xff0c;实则要把屏幕上的像素世界&#xff0c;准确映射到打印机的物理纸张上。而MFC 的打印机制就像…

Apache Ignite 长事务终止机制

这段内容讲的是 Apache Ignite 中长事务终止机制&#xff08;Long Running Transactions Termination&#xff09;&#xff0c;特别是关于分区映射交换&#xff08;Partition Map Exchange&#xff09;与事务超时设置&#xff08;Transaction Timeout&#xff09;之间的关系。下…

网络编程---TCP协议

TCP协议基础知识TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网核心协议之一&#xff0c;位于传输层&#xff08;OSI第4层&#xff09;&#xff0c;为应用层提供可靠的、面向连接的、基于字节流的数据传输服务。它与IP协议共同构成…

K 近邻算法(K-Nearest Neighbors, KNN)详解及案例

K近邻算法&#xff08;K-Nearest Neighbors, KNN&#xff09;详解及案例 一、基本原理 K近邻算法是一种监督学习算法&#xff0c;核心思想是“物以类聚&#xff0c;人以群分”&#xff1a;对于一个新样本&#xff0c;通过计算它与训练集中所有样本的“距离”&#xff0c;找出距…

深入理解 Redis 集群化看门狗机制:原理、实践与风险

在分布式系统中&#xff0c;我们常常需要执行一些关键任务&#xff0c;这些任务要么必须成功执行&#xff0c;要么失败后需要明确的状态&#xff08;如回滚&#xff09;&#xff0c;并且它们的执行时间可能难以精确预测。如何确保这些任务不会被意外中断&#xff0c;或者在长时…

Python机器学习:从零基础到项目实战

目录第一部分&#xff1a;思想与基石——万法归宗&#xff0c;筑基问道第1章&#xff1a;初探智慧之境——机器学习世界观1.1 何为学习&#xff1f;从人类学习到机器智能1.2 机器学习的“前世今生”&#xff1a;一部思想与技术的演进史1.3 为何是Python&#xff1f;——数据科学…