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

登录-07.JWT令牌-登录后下发令牌

一.思路

我们首先完成令牌生成。

在响应数据这一块

 

该响应数据是一个标准的Result结构,其中"data"的值就是一个JWT令牌。因此我们只需要将生成的JWT令牌封装在Result当中然后返回给前端即可。

备注是给前端看的,不用管。以后我们做校验时,只需要从前端的header中拿到名称为token的值,然后进行校验即可。

二.步骤

package com.gjw.util;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;
import java.util.Map;public class JwtUtils {private static String signKey = "handsomegaojiaweilovesbeautifulmengxinruloveforever";private static Long expire = 4300000L;/*** 生成Jwt令牌*/public static String generateJwt(Map<String,Object> claims) {String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, signKey).setClaims(claims).setExpiration(new Date(System.currentTimeMillis() + expire) ).compact();return jwt;}/*** 解析Jwt令牌*/public static Claims parseJWT(String jwt){Claims claims = Jwts.parserBuilder().setSigningKey(signKey).build().parseClaimsJws(jwt).getBody();return claims;}
}

我们设置过期时间为4300000毫秒。并将JWT令牌工具类引入登录的controller方法。

package com.gjw.controller;import com.gjw.pojo.Emp;
import com.gjw.pojo.Result;
import com.gjw.service.EmpService;
import com.gjw.util.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@Slf4j
@RestController
public class LoginController {@Autowiredprivate EmpService empService;@PostMapping("/login")public Result result(@RequestBody  Emp emp) {log.info("用户登录:{}",emp);Emp e = empService.login(emp);//登录成功,生成令牌,下发令牌if (e != null) {Map<String,Object> claims = new HashMap<>();claims.put("id",e.getId());claims.put("name",e.getName());claims.put("username",e.getUsername());String jwt = JwtUtils.generateJwt(claims);return Result.success(jwt);}//登录失败, 返回错误信息return Result.error("用户名或密码错误!");}
}

首先判断登录用户是否存在,如果不存在,那么就登录失败,返回错误信息。如果找到用户,那么就将该用户的id,name,username的键值对作为claims数据集成到令牌当中,并返回生成的JWT令牌到controller层中。然后将生成的JWT令牌通过Result返回给前端。

登录后我们可以通过查看浏览器的开发者工具中的Response进行JWT令牌的查看

JWT令牌在浏览器的Local Storage中存储。

而当前端再次发起请求时,会将生成的JWT令牌携带过来。

相关文章:

登录-07.JWT令牌-登录后下发令牌

一.思路 我们首先完成令牌生成。 在响应数据这一块 该响应数据是一个标准的Result结构&#xff0c;其中"data"的值就是一个JWT令牌。因此我们只需要将生成的JWT令牌封装在Result当中然后返回给前端即可。 备注是给前端看的&#xff0c;不用管。以后我们做校验时&…...

机器学习实战(7):聚类算法——发现数据中的隐藏模式

第7集&#xff1a;聚类算法——发现数据中的隐藏模式 在机器学习中&#xff0c;聚类&#xff08;Clustering&#xff09; 是一种无监督学习方法&#xff0c;用于发现数据中的隐藏模式或分组。与分类任务不同&#xff0c;聚类不需要标签&#xff0c;而是根据数据的相似性将其划…...

【数据序列化协议】Protocol Buffers

一、为什么需要序列化&#xff1f; 数据跨平台/语言交互&#xff1a; 不同编程语言&#xff08;如 Java、Python、Go&#xff09;的数据结构不兼容&#xff0c;序列化提供统一的数据表示。例如&#xff1a;Java 的 HashMap 和 Python 的 dict 需转换为通用格式&#xff08;如 …...

基于 Python 的电影市场预测分析系统设计与实现(源码 + 文档)

大家好&#xff0c;今天要和大家聊的是一款基于 Python 的“电影市场预测分析”系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于 Python 的“电影市场预测分析”系统主要面向以下用户角色&#xff1a;电影制片方、电影发行…...

计算机三级网络技术知识汇总【6】

第六章 交换机及其配置 1. 交换机基础 1.1 基本概念 局域网交换机是一种基于 MAC 地址识别&#xff0c;完成转发数据帧功能的一种网络连接设备。 工作在数据链路层&#xff0c;根据进入端口数据帧中的 MAC 地址进行数据帧的过滤、转发&#xff08;也是交换机的工作原理&…...

2025教育与科研领域实战全解析:DeepSeek赋能细分场景深度指南(附全流程案例与资源)

🚀 2025教育与科研领域实战全解析:DeepSeek赋能细分场景深度指南(附全流程案例与资源)🚀 📚 目录 DeepSeek在教育与科研中的核心价值教学场景应用:从备课到课堂管理的全流程革新科研场景应用:从数据分析到论文写作的智能跃迁师生协同创新:AI赋能的个性化学习与科研…...

Linux 命令大全完整版(10)

4. 压缩与解压缩命令 gzip(gnu zip) 功能说明&#xff1a;压缩文件。语  法&#xff1a;gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/fast][文件…] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/f…...

彻底卸载kubeadm安装的k8s集群

目录 一、删除资源 二、停止k8s服务 三、重置集群 四、卸载k8s安装包 五、清理残留文件和目录 六、删除k8s相关镜像 七、重启服务器 一、删除资源 # 删除集群中的所有资源&#xff0c;包括 Pod、Deployment、Service&#xff0c;任意节点执行 kubectl delete --all pod…...

vue+element-plus简洁完美实现淘宝网站模板

目录 一、项目介绍 二、项目截图 1.项目结构图 2.首页 3.详情 4.购物车 5.登陆页 三、源码实现 1.路由配置 2.依赖包 四、总结 一、项目介绍 项目在线预览&#xff1a;点击访问 本项目为vue项目&#xff0c;参考淘宝官方样式为主题来设计元素&#xff0c;简洁美观&…...

学习aigc

DALLE2 论文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…...

深度学习-127-LangGraph之基础知识(四)自定义状态添加额外字段的聊天机器人

文章目录 1 自定义状态2 自定义工具2.1 完善工具human_assistance2.2 浏览器工具baidu_search3 聊天机器人3.1 绑定工具的聊天模型3.2 聊天机器人(带记忆)4 调用图4.1 调用工具时中断4.2 人工提供信息恢复4.3 查询存储的状态4.4 手动更新状态5 参考附录使用LangGraph,在状态中…...

广东英语十二种应用文模版范文

1. 邀请信&#xff08;Invitation Letter&#xff09; 模版 Dear [Recipients Name],I hope this letter finds you well. I am writing to invite you to [Event Name] which will be held on [Date] at [Location]. The event will start at [Time] and we would be deligh…...

python使用httpx_sse调用sse流式接口对响应格式为application/json的错误信息的处理

目录 问题描述方案 问题描述 调用sse流式接口使用httpx_sse的方式 import httpxfrom httpx_sse import connect_sse# 省略无关代码try:with httpx.Client() as client:with connect_sse(client, "GET", url, paramsparam) as event_source:clear_textbox(response_t…...

Leetcode-407. Trapping Rain Water II [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-407. Trapping Rain Water IIhttps://leetcode.com/problems/trapping-rain-water-ii/description/ 一、题目描述 Given an m x n integer matrix heightMap representing the height of each unit cell in a 2D…...

详解 torch.triu:上三角矩阵的高效构造(中英双语)

详解 torch.triu&#xff1a;上三角矩阵的高效构造 在深度学习和矩阵运算中&#xff0c;我们经常需要构造上三角矩阵&#xff08;Upper Triangular Matrix&#xff09;&#xff0c;其中主对角线以下的元素全部设为 0。PyTorch 提供了一个高效的函数 torch.triu()&#xff0c;用…...

[ TypeScript ] “undefined extends xxx“ 总是为 true 的 bug

版本号 "typescript": "^5.7.3", "unplugin": "^2.2.0",说明 在使用 unplugin 时 , 我定义插件的参数是 必填的, 使用时却是一个可空参数, 不传参也不会报错, (options?: UserOptions) > Return &#x1f632;&#x1f632;&…...

高清下载油管视频到本地

下载工具并安装: yt-dlp官网地址&#xff1a; GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官网地址&#xff1a; Download FFmpeg 注&#xff1a;记住为其添加环境变量 操作命令&#xff1a; 该指令表示以720p码率下载VIDEO_UR…...

Hadoop常用操作命令

在NameNode节点格式化集群 初始化集群 hdfs namenode -format启动HDFS sbin/start-dfs.sh启动yarn sbin/start-yarn.sh启动NodeManager yarn-daemon.sh start nodemanager启动DataNode hadoop-daemon.sh start datanode启动SecondaryNameNode hadoop-daemon.sh start se…...

[HOT 100] 2439. 最小化数组中的最大值

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 2439. 最小化数组中的最大值 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给你一个下标从 0 开始的数组 nums &#xff0c;它含有 n 个非负整数。 每一步操作中&#…...

【JavaEE进阶】图书管理系统 - 贰

目录 &#x1f332;前言 &#x1f384;设计数据库 &#x1f343;引⼊MyBatis和MySQL驱动依赖 &#x1f333;Model创建 &#x1f38d;约定前后端交互接口 &#x1f340;服务器代码 &#x1f6a9;控制层 &#x1f6a9;业务层 &#x1f6a9;数据层 &#x1f334;前端代码…...

终极指南:三步掌握Code2Prompt代码转提示神器,让AI助手秒懂你的项目

终极指南&#xff1a;三步掌握Code2Prompt代码转提示神器&#xff0c;让AI助手秒懂你的项目 【免费下载链接】code2prompt A CLI tool to convert your codebase into a single LLM prompt with source tree, prompt templating, and token counting. 项目地址: https://gitc…...

从单体到微服务:如何用Spring Cloud构建高可用医院信息系统HIS

从单体到微服务&#xff1a;如何用Spring Cloud构建高可用医院信息系统HIS 【免费下载链接】HIS HIS英文全称 hospital information system&#xff08;医疗信息就诊系统&#xff09;&#xff0c;系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患…...

英雄联盟国服皮肤定制终极指南:R3nzSkin技术深度解析与安全实践

英雄联盟国服皮肤定制终极指南&#xff1a;R3nzSkin技术深度解析与安全实践 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server R3nzSkin国服特供版是专为中…...

别再只用 .* 了!Sublime正则跨行匹配的坑与正确姿势:以清理代码注释块为例

Sublime Text正则跨行匹配实战&#xff1a;从清理代码注释到日志分析的深度指南 在代码编辑的日常工作中&#xff0c;我们常常需要处理各种跨行文本——从多行注释块到冗长的日志输出。许多开发者习惯性地使用.*来匹配任意字符&#xff0c;但当遇到换行符时就会束手无策。本文将…...

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗?

从BERT到ViT&#xff1a;聊聊那个“借”来的CLS Token&#xff0c;以及我们真的需要它吗&#xff1f; 在计算机视觉领域&#xff0c;Vision Transformer&#xff08;ViT&#xff09;的出现彻底改变了传统CNN主导的格局。而其中最具争议的设计之一&#xff0c;莫过于那个从NLP领…...

从一次线上故障复盘讲起:我们是如何被‘Python版本’坑了整整两天的?

当PySpark遇上Python版本&#xff1a;一场持续48小时的技术噩梦与救赎 凌晨三点&#xff0c;办公室只剩下显示器发出的冷光。我盯着屏幕上那个反复出现的错误信息&#xff0c;感觉太阳穴突突直跳。这已经是连续第二个通宵了——一个看似简单的PySpark任务提交&#xff0c;却因为…...

从家庭账本到预测模型:一个Python案例讲透线性回归怎么用(附OLS源码)

从家庭账本到预测模型&#xff1a;一个Python案例讲透线性回归怎么用&#xff08;附OLS源码&#xff09; 翻开记账本&#xff0c;你是否好奇每月消费和收入之间究竟存在怎样的数学关系&#xff1f;当收入增加1000元时&#xff0c;消费会同步增长多少&#xff1f;这些问题背后隐…...

蓝桥杯单片机CT107D平台实战:手把手教你用IIC驱动24C02实现断电记忆(附完整源码)

蓝桥杯单片机CT107D平台实战&#xff1a;手把手教你用IIC驱动24C02实现断电记忆&#xff08;附完整源码&#xff09; 在嵌入式系统开发中&#xff0c;数据持久化是一个常见但至关重要的需求。想象一下&#xff0c;你精心设计的温控系统每次断电后都要重新设置参数&#xff0c;或…...

告别UDP丢包!手把手教你用NIOS软核在FPGA上实现稳定TCP通信(附完整工程代码)

FPGA实战&#xff1a;基于NIOS II软核的高性能TCP通信架构设计与优化 在工业自动化、医疗影像传输和实时数据采集等领域&#xff0c;FPGA与上位机的稳定通信一直是开发者面临的挑战。传统UDP方案虽然实现简单&#xff0c;但数据丢失和乱序问题常常导致系统可靠性下降。本文将分…...

抖音无水印下载器:3分钟搞定批量下载的终极方案

抖音无水印下载器&#xff1a;3分钟搞定批量下载的终极方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...