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

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录

实现思路

会话跟踪的三个方案--引出Jwt令牌技术

1.访问cookie的值,在同一会话的不同请求之间共享数据

2.session

3.现代普遍采用的令牌技术--JWT令牌

JWT令牌技术

​第一步--生成令牌

1.引入依赖

2.生成令牌

第二步--校验令牌

第三步--登录下发令牌


需要解决的问题:用户在未登录状态下,也可以通过访问网址直接跳过登录界面

实现思路

        通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出

       但这样较为繁琐,因此我们可以通过一种统一拦截的技术来拦截所有请求.这涉及到了会话跟踪这一技术.

会话跟踪的三个方案--引出Jwt令牌技术

1.访问cookie的值,在同一会话的不同请求之间共享数据

跨域:只要协议/IP地址/端口三个维度任何一个不同,就是跨域操作

2.session

3.现代普遍采用的令牌技术--JWT令牌

JWT令牌技术

一个令牌包含三个部分:头/有效载荷/签名:防止令牌被篡改

核心的两个步骤:

生成令牌  &  校验令牌

第一步--生成令牌

1.引入依赖

2.生成令牌

1.签名算法

2.自定义内容

3.令牌有效期

以下为测试样例:

@Testpublic void JwtTest(){Map<String, Object> claims = new HashMap<>();claims.put("id", 1);claims.put("name", "tom");/*此处负载的内容是id和姓名*/String jwt = Jwts.builder()/*设置签名算法*/.signWith(SignatureAlgorithm.HS256, "theresa")/*自定义内容(负载)*/.setClaims(claims)/*设置有效期为一小时*/.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)).compact();}

第二步--校验令牌

报错的两种情况:过期/被篡改

.setSigningKey("")填入和开始输入的一样,签名算法
.parseClaimsJws("")中填入要校验的令牌

public void ParseJwt(String jwt){//许可验证Claims claims = Jwts.parser().setSigningKey(signKey)//传递签名.parseClaimsJws(jwt)//传递令牌.getBody();//得到内容System.out.println(claims);}

第三步--登录下发令牌

@PostMapping("/login")public Result login(@RequestBody Emp emp){log.info("员工登录:{}",emp);Emp e = empService.login(emp);//若登录成功,生成令牌并下发令牌if(e != null){//定义claims携带当前登录的员工信息Map<String,Object> claims = new HashMap<>();claims.put("id",e.getId());claims.put("name",e.getName());claims.put("username",e.getUsername());​​​//此处将claims传入了我们第一步定义的生成令牌工具类中String jwt =  JwtUtils.generateJwt(claims);return Result.success(jwt);}//若登录失败,返回错误信息return Result.error("用户名或密码错误");}
}

相关文章:

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录 实现思路 会话跟踪的三个方案--引出Jwt令牌技术 1.访问cookie的值,在同一会话的不同请求之间共享数据 2.session 3.现代普遍采用的令牌技术--JWT令牌 JWT令牌技术 ​第一步--生成令牌 1.引入依赖 2.生成令牌 第二步--校验令牌 第三步--登录下发令牌 需要解决的…...

Sparta工具用法描述之信息收集(漏洞分析)

声明:本文仅做学习与交流,任何用于非法用途、行为等造成他人损失的,责任自负。本文不承担任何法律责任。 Sparta是python GUI应用程序,它通过在扫描和枚举阶段协助渗透测试仪来简化网络基础结构渗透测试。 通过点击并单击工具箱并以方便的方式显示所有工具输出,它可以使测…...

Vue复选框批量删除示例

Vue复选框批量删除 通过使用v-model指令绑定单个复选框 例如<input type"checkbox" id"checkbox" v-model"checked"> 而本次我们要做的示例大致是这样的&#xff0c;首先可以增加内容&#xff0c;然后通过勾选来进行单独或者批量删除&…...

Docker自定义镜像

一、镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层结构&#xff0c;每一层称为一个Layer BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统其它&#xff1a;在BaseImage基础上添加依赖、安装程序、完成整个应用的…...

ardupilot的编译过程

环境 树莓派4b ubuntu20.04 git 2.25.1 python3.8.10 pixhawk2.4.8 下载源码 &#xff08;已经配置好git环境和ssh&#xff09; git clone --recurse-submodules gitgithub.com:ArduPilot/ardupilot.gitcd ardupilotgit status使用git status检查是否下载完整 如果不完整&a…...

Unity中Shader实现模板测试Stencil

文章目录 前言一、UI中的遮罩1、Mask ——> 模板测试2、RectMask2D ——> UNITY_UI_CLIP_RECT 二、模板缓冲区Stencil一般是和Pass平行的部分&#xff0c;Pass部分写的是颜色缓冲区Stencil:Comp&#xff08;比较操作&#xff09;Pass(模版缓冲区的更新) 三、实际使用1、在…...

多线程与并发

多线程与高并发 线程的创建方式1.继承Thread类 重写run方法2.实现Runnable接口 重写run方法3. 实现Callable 重写call方法&#xff0c;配合FutureTask 线程的使用1.线程的状态1.1. 传统操作系统层面5种状态1.2.Java中给线程准备的6种状态 2.线程的常用方法2.1 获取当前线程2.2 …...

手写call方法

Function.prototype.myCallfunction (context,args) {console.log(arguments)//context 表示call里面的第一个参数也就是需要改变this指向的那个对象。//this表示这个方法//把这个方法挂到需要改变指向的对象身上调用&#xff0c;相当于把this指向了这个对象身上&#xff0c;从…...

基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、图像数据传输 4.2、直方图统计算法 4.3、时序控制和电路设计 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescal…...

数据库:Hive转Presto(一)

本人因为工作原因&#xff0c;经常使用hive以及presto&#xff0c;一般是编写hive完成工作&#xff0c;服务器原因&#xff0c;presto会跑的更快一些&#xff0c;所以工作的时候会使用presto验证结果&#xff0c;所以就要频繁hive转presto&#xff0c;为了方便&#xff0c;我用…...

Responder

环境准备 操作系统:Kali Linux工具:responder,john,evil-winrm PS:输入以下命令解决靶场环境无法打开问题 #echo "<靶机IP> unika.htb">>/etc/hostsresponder工具 [Kali 官网] 手册地址:https://www.kali.org/tools/responder/ 摘要: This package c…...

基于下垂控制的并网逆变器控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 主要模块&#xff1a; 建议使用MATLAB2021b及以上版本打开&#xff01; 功率计算模块、下垂控制模块、电压电流双环控制模块、虚拟阻抗压降模块 扰动设置&#xff1a; 在0.5秒到2秒始端设置0.25Hz的电网频…...

android获取RAM、CPU频率、系统版本、CPU核数

参考链接&#xff1a; https://www.jianshu.com/p/76d68d13c475 https://github.com/matthewYang92/Themis 获取CPU频率、核数的逻辑&#xff0c;是通过文件操作实现的&#xff0c;Android是基于Linux系统的&#xff0c;所以该方式针对不同的手机都是可靠的操作方式。 RAM&am…...

微信小程序python+nodejs+php+springboot+vue 讲座预约系统

讲座预约管理系统的用户是系统最根本使用者&#xff0c;按需要分析系统包括用户&#xff1a;学生、管理员。 管理员通过后台的登录页面&#xff0c;选择管理员权限后进行登录&#xff0c;管理员的权限包括学生信息管理和文章公告管理。讲座公告管理&#xff0c;添加讲座公告信息…...

嵌入式开发笔记:STM32的外设GPIO知识学习

GPIO简介&#xff1a; • GPIO &#xff08; General Purpose Input Output &#xff09;通用输入输出口 • 可配置为 8 种输入输出模式 • 引脚电平&#xff1a; 0V~3.3V &#xff0c;部分引脚可容忍 5V &#xff08;如舵机和驱动直流电机&#xff09; • 输出模式下可控制端口…...

单片机论文参考:2、基于单片机的病床呼叫系统设计

任务要求 设计病床呼叫系统&#xff0c;使用3X8矩阵开关分别模拟医院病房与病床位数&#xff0c;当某开关按下时&#xff0c;系统显示呼叫的病房与病床、呼叫的时间。处理完毕可清除该呼叫显示记录。同时有数个病床呼叫时&#xff0c;可以循环呼叫记录显示。 摘要 病房呼叫系统…...

【C语言】结构体实现位段!位段有何作用?

本篇文章目录 1. 声明位段2. 位段的内存分配3. 位段的跨平台问题4.位段的应用5. 如何解决位段的跨平台问题&#xff1f; 1. 声明位段 位段的声明和结构是类似的&#xff0c;有两个不同&#xff1a; 位段的成员必须是 int、unsigned int 或 char。位段的成员名后边有一个冒号和…...

msvcp140为什么会丢失?msvcp140.dll丢失的解决方法

msvcp140.dll 是一个动态链接库文件&#xff0c;它包含了 C 运行时库的一些函数和类&#xff0c;例如全局对象、异常处理、内存管理、文件操作等。它是 Visual Studio 2015 及以上版本中的一部分&#xff0c;用于支持 C 应用程序的运行。如果 msvcp140.dll 丢失或损坏&#xff…...

Ingress Controller

什么是 Ingress Controller &#xff1f; 在云原生生态中&#xff0c;通常来讲&#xff0c;入口控制器( Ingress Controller )是 Kubernetes 中的一个关键组件&#xff0c;用于管理入口资源对象。 Ingress 资源对象用于定义来自外网的 HTTP 和 HTTPS 规则&#xff0c;以控制进…...

离线安装 K3S

一、前言 简要记录一下离线环境下 K3S 的搭建&#xff0c;版本为 v1.23.17k3s1&#xff0c;使用外部数据库 MySQL 作元数据存储&#xff0c;禁用默认组件&#xff08;coredns、servicelb、traefik、local-storage、metrics-server&#xff09;并使用 Helm 单独安装&#xff08…...

降AI方法选错了会有什么后果?这几个坑别踩

降AI方法选错了会有什么后果&#xff1f;这几个坑别踩 降AI率这件事&#xff0c;大部分同学觉得"无非就是降没降下来"&#xff0c;以为选错方法最多就是浪费点时间。 实际上&#xff0c;有几种后果比这更严重。 后果一&#xff1a;浪费宝贵时间&#xff0c;错过截止…...

从硬件差异到数据兼容:速腾RS与Velodyne雷达的‘intensity‘字段深度解析

从硬件差异到数据兼容&#xff1a;速腾RS与Velodyne雷达的intensity字段深度解析 激光雷达作为自动驾驶和机器人感知的核心传感器&#xff0c;其数据格式的标准化程度直接影响算法开发的效率。速腾&#xff08;RoboSense&#xff09;与Velodyne作为两大主流厂商&#xff0c;硬件…...

AutoUpdater.NET实战:Windows服务程序更新失败的3种解决方案

AutoUpdater.NET实战&#xff1a;Windows服务程序更新失败的3种解决方案 在Windows服务程序的开发和维护过程中&#xff0c;自动更新是一个常见但颇具挑战性的需求。许多开发者习惯使用AutoUpdater.NET这类便捷的库来处理桌面应用程序的更新&#xff0c;但当同样的代码迁移到Wi…...

配置Claude Code遇到Unable to connect to Anthropic services Failed to connect to api.anthropic.cOm: ERR_B

在PowerShell里输入[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:xxxxx", "User")[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:xxxxx", "User")[Enviro…...

解压缩软件分享-Banizip

解压缩软件分享-Banizip蓝奏云地址https://wwbdt.lanzoul.com/ijspk3mbduxi 密码:9y00百度网盘地址通过网盘分享的文件&#xff1a;BANDIZIP6-SETUP.EXE 链接: https://pan.baidu.com/s/1VBovOqT-M7kiv2b9YuJGIw?pwdrc87 提取码: rc87 为什么推荐这个呢&#xff0c;因为这个支…...

Omni-Vision Sanctuary 数据库集成指南:MySQL配置与视觉数据存储方案

Omni-Vision Sanctuary 数据库集成指南&#xff1a;MySQL配置与视觉数据存储方案 1. 前言&#xff1a;为什么需要数据库集成 视觉识别应用每天会产生大量数据&#xff0c;如果没有合适的存储方案&#xff0c;这些宝贵的数据很容易丢失或难以管理。MySQL作为最流行的关系型数据…...

为什么你的Zotero无法正确处理中文文献?Jasminum给出完美答案

为什么你的Zotero无法正确处理中文文献&#xff1f;Jasminum给出完美答案 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研…...

11. 免费GPU资源汇总(三):腾讯云、百度智能云免费算力实操

调试卡在CUDA out of memory?聊聊免费GPU算力的门道 昨天帮同事调试一个目标检测模型,明明batch_size已经调到4了,还是爆显存。实验室的2080Ti卡被其他项目占着,自己笔记本的3060跑不动。这种时候才真切感受到——独立GPU资源对开发者来说,有时候比代码能力还关键。 免费…...

李开复:AI时代,文科生的春天真的来了

一个颠覆性的观察作为中国最早研究AI的专家&#xff0c;李开复最近在一次演讲中表达了一个观点&#xff1a;"我过去30年都在研究AI和技术。现在我想告诉大家&#xff1a;AI时代&#xff0c;最受欢迎的不会是更多的工程师&#xff0c;而是懂得如何与AI对话、能清楚表达需求…...

Nunchaku-flux-1-dev性能调优:针对STM32嵌入式设备演示的图片预处理

Nunchaku-flux-1-dev性能调优&#xff1a;针对STM32嵌入式设备演示的图片预处理 最近在折腾一个智能门禁项目&#xff0c;需要在STM32上跑人脸识别。想法挺简单&#xff0c;本地抓拍人脸&#xff0c;然后传给云端的大模型Nunchaku-flux-1-dev去分析。结果一上手就发现&#xf…...