一张流程图带你学会SpringBoot结合JWT实现登录功能(一)

简介: 一张流程图带你学会SpringBoot结合JWT实现登录功能

ea00facb524647d3b712a504c87dfe5c.png


登录流程图



🌟数据准备


数据库创建



数据库表创建



相关SQL语句


/*
 Navicat Premium Data Transfer
 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50709
 Source Host           : localhost:3306
 Source Schema         : demo
 Target Server Type    : MySQL
 Target Server Version : 50709
 File Encoding         : 65001
 Date: 04/08/2023 11:05:33
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`  (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `user_password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 'daencode', '123456');
INSERT INTO `sys_user` VALUES (2, '隔壁老王', '123456');
INSERT INTO `sys_user` VALUES (3, '太监小李', '123456');
SET FOREIGN_KEY_CHECKS = 1;


🌟JWT介绍


基本概念


JWT(JsonWebToken)是一种轻量级的跨域身份验证解决方案。通常被用于无状态身份验证机制,将用户信息签名打包进行传输。


结构


组成结构:header.payload.signature

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


  • header:头部。包含了算法类型和令牌类型两部分内容。


  • payload:载荷或者称之为Claims声明。包含用户或者其他实体的信息。其中的数据结构以Key-Value形式存在。通常分为以下3个类别:

  • 注册声明:预定义信息。如iss(签发者)、exp(过期时间)、sub(主题)等。
  • 公共声明:根据需要自定义的字段,例如用户 ID、角色、权限等。
  • 私有声明:自定义的私有字段,用于双方约定的额外信息。


  • signature:签名。将头部和载荷进行签名,确保数据的完整性和防止篡改。签名需要使用头部中指定的算法和密钥进行计算。其中的your-256-bit-secret为私钥。


注意:因header和payload部分为base64编码解码,并不是安全的,所以payload中不能放敏感信息。


目录
相关文章
|
2月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
131 0
|
2月前
【Azure APIM】在APIM中实现JWT验证不通过时跳转到Azure登录页面
【Azure APIM】在APIM中实现JWT验证不通过时跳转到Azure登录页面
|
2月前
|
NoSQL 关系型数据库 MySQL
SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
93 2
|
2月前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
2月前
|
NoSQL 安全 Java
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
|
5月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
188 0
|
3月前
|
JSON 安全 Java
使用Spring Boot和JWT实现用户认证
使用Spring Boot和JWT实现用户认证
|
2月前
|
JSON 前端开发 Java
Spring Boot JWT 用户认证
Spring Boot JWT 用户认证
14 0
|
3月前
|
存储 算法 安全
下一篇
无影云桌面