登录验证

JWT

Json Web Token

定义了一种简洁的,自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的

 组成

        第一部分 header 头:记录令牌类型,签名算法等

        第二部分 Payload 有效载荷:携带一些自定义信息,默认信息等

        第三部分 Signature 签名:防止Token被修改,确保安全性。将header,Payload加入执行密匙,通过指定签名算法计算而来

 在pom.xml中引入JWT令牌依赖

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

Jwt生成

@SpringBootTest
class SpringbootMybatisCrudApplicationTests {

    @Autowired
    private EmpMapper empMapper;

    @Test
    public void testGenJwt(){
        Map<String,Object>claims = new HashMap<>();
        claims.put("id",1);
        claims.put("name","tom");
        String jwt =  Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,"awaw")//签名算法
                .setClaims(claims)//自定义内容(载荷)
                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 10000))//有效期
                .compact();
        System.out.println(jwt);
    }
}

Jwt校验

Jwt检验时使用的签名秘钥,必须和生成Jwt令牌时使用的秘钥是配套的 

@SpringBootTest
class SpringbootMybatisCrudApplicationTests {

    @Autowired
    private EmpMapper empMapper;
    
    @Test
    public void testParseJwt(){
        Claims claims = Jwts.parser()
                .setSigningKey("awaw")//指定签名密匙
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTcwNDY0NjU4OH0.EKF6hnJvMExOBaJHE71OZmQBN0Sbcc3sH9FHkBq8sDY")//解析令牌
                .getBody();
        System.out.println(claims);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

servlet+jdbc+jsp实现登录界面的验证(基于MVC思想)

一、MVC的概念 MVC是模型(Model)和视图(View)以及控制器(Controller)的简写&#xff0c;是一种将数据、界面显示和业务 逻辑进行分离的组织方式&#xff0c;这样在改进界面及用户交互时&#xff0c;不需要重新编写业务逻辑&#xff0c;从而提高了 代码的可维护性。 M&#xf…

基于JavaWeb+SSM+Vue基于微信小程序的消防隐患在线举报系统的设计与实现

基于JavaWebSSMVue基于微信小程序的消防隐患在线举报系统的设计与实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 1.1 题目背景 随着信息化飞速发展&#xff0c;互联网不…

RabbitMQ(八)消息的序列化

目录 一、为什么需要消息序列化&#xff1f;二、常用的消息序列化方式1&#xff09;Java原生序列化&#xff08;默认&#xff09;2&#xff09;JSON格式3&#xff09;Protobuf 格式4&#xff09;Avro 格式5&#xff09;MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间…

网络层协议及IP编址

0x00 前言 本节为网络层协议及IP编址内容 IP地址的范围&#xff1a;0.0.0.0-255.255.255.255 IP分为网络位以及主机位。子网划分就是向主机位借位。 网络层协议 IPICMP&#xff08;internet Control message protocol&#xff09;IPX IP协议的作用 为网络层的设备提供逻…

程序语言相关知识——偏向Eigen矩阵

1 查看 Eigen库表示的矩阵 方法 1.1 列矩阵x在监视中&#xff0c;这样查看&#xff0c;数值右侧的圈圈 可用于更新数值 随程序 1.2 比较全的方法&#xff1a;来自于知乎&#xff1a;https://zhuanlan.zhihu.com/p/625334009?utm_id0 1.3 eigen的用法&#xff1a;https://ww…

linux高级管理——Squid代理

一、squid服务基础&#xff1a; 1.1缓存代理的概述&#xff1a; 代理的工作机制 当客户机通过代理来请求Web页面时&#xff0e;指定的代理服务器会先检查自己的缓存&#xff0c;如果缓存中已经有客户机需要的页面&#xff0c;则直接将缓存中的页面内容反馈给客户机:如果缓存中…

整合事务,名词,概念

1、MySQL是单进程多线程&#xff08;而Oracle等是多进程&#xff09;&#xff0c;也就是说MySQL实例在系 统上表现就是一个服务进程&#xff0c;即进程&#xff0c;&#xff08;通过多种方法可以创建多实例&#xff0c;再安装一个端口号不同的mysql&#xff0c;或者通过workben…

滞回比较器(施密特触发器)在软件中的应用-电池电压显示

1、单限比较器和滞回比较器的区别 在单限比较器中&#xff0c;输入电压在阈值电压附近的任何微小变化&#xff0c;都会引起输出电压的跃变。不管这种微小变化是来源于输入电压还是来源于外部干扰。因此&#xff0c;虽然单限比较器很灵敏&#xff0c;但是抗干扰能力差。在单限比…

学习Redis缓存

学习Redis缓存 NoSQL和SQL的区别缓存缓存作用缓存成本添加Redis缓存 Redis特征Redis中数据结构Redis通用命令String类型Key的层级格式Hash类型Redis的Java客户端 NoSQL和SQL的区别 缓存 缓存就是数据交换的缓冲区&#xff0c;是存储数据的临时地方&#xff0c;一般读写性比较高…

10款有趣的前端源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 自毁按钮动画特效 自毁按钮动画特效 点击打开盒子可以点击自毁按钮 进而会出现自毁…

使用Python+selenium3.0实现第一个自动化测试脚本

这篇文章主要介绍了使用Pythonselenium实现第一个自动化测试脚本&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化&#xff0c;记录一下学习过程。…

Linux驱动学习—中断

1、中断基础概念 1.1 什么是中断 CPU在正常运行期间&#xff0c;由外部或者内部引起的时间&#xff0c;让CPU停下当前正在运行的程序&#xff0c;转而去执行触发他的中断所对应的程序&#xff0c;这就是中断。 响应中断的过程&#xff1a; <1>中断请求 <2>中断…

Spring Cloud之OpenFeign异常处理

简易原理图 原理基于请求头传递错误消息&#xff0c;利用aop和全局异常拦截机制实现。 服务提供者 远程调用本地方法b&#xff0c;throw异常出来FeignExceptionAspect AOP拦截处理异常到请求头中&#xff0c;继续throwGlobalExceptionHandler处理&#xff0c;返回响应Respons…

1868_C语言单向链表的实现

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/c_basic: little bits of c. 1868_C语言中简单的链表实现 简单整理一下链表的实现&#xff0c;这一次结合前面看到的一些代码简单修改做一个小结。 主题由来介绍 以前工作之中链表的使用其实不多&#xff0c;主要是…

C++动态内存分配(动态内存分配函数)栈区

内存拷贝函数&#xff1a; void *memcpy(void *dest,const void *src,size_tn);#include<string.h>功能&#xff1a;从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest内存地址的起始位置 分配内存使用new 例如&#xff1a;salarynew int[num]; 最后需要释放…

三、Qt核心与Qt类库

一、Qt核心&#xff1a;元对象系统 1、Qt核心特点 Qt对标准C进行了扩展&#xff0c;引入了一些新的概念和功能元对象编译器&#xff08;MOC&#xff09;是一个预处理器&#xff0c;先将Qt的特性程序转为标准C程序&#xff0c;再由标准C编译器进行编译Qt为C语言增加的特性在Qt…

Android学习(三):在Android虚拟机中运行项目

Android学习&#xff08;三&#xff09;&#xff1a;在Android虚拟机中运行项目 一、前期准备 在系统环境变量中添加ANDROID_SDK_HOME&#xff0c;把值指定到一个其他目录。就可以把Android AVD(虚拟机)创建在指定目录下。修改环境变量后&#xff0c;如果Android Studio是在运…

Java Swing手搓童年坦克大战游戏(I)

前言 业余偶尔对游戏有些兴趣&#xff0c;不过这样的时代&#xff0c;硬件软件飞速进步&#xff0c;2D游戏画面都无比精美&#xff0c;之前的8bit像素游戏时代早就过去了&#xff0c;不过那时候有许多让人印象深刻的游戏比如魂斗罗、超级玛丽、坦克大战(Battle City)等等。 学…

1866_FreeRTOS的存储管理方案heap_4分析

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. 1866_FreeRTOS的存储管理方案heap_4分析 对FreeRTOS的heap_4进行分析拆解&#xff0c;按照文学式编程的方式重新组织成个人笔记。 主题由来介绍 free以及malloc这样的存…