首页 > 数据库 >token+redis的简单使用方式

token+redis的简单使用方式

时间:2023-10-01 19:12:41浏览次数:40  
标签:令牌 String redis JWTUtils JWT token 简单

以用户登录为例,讲解token+redis的使用方式,环境是vue和springboot。
一、用户登录时序图
image

二、前端代码分析
1、前端使用vue store保存token
image

2、在每次发起请求时进行响应拦截,从vue store取出token,放在每次请求的请求头上
image

三、后端代码分析
1、在控制层接收账号,密码,调用服务层代码
image

2、服务层继续处理,返回token
image

3、JWTUtils代码过长,会在文章末尾进行分享
四、额外拓展
1、假如我们不想使用redis,那我们使用用户信息序列化,使用JWTUtils生成token返回给前端
2、校验的时候也是用JWTUtils建立一个校验方法,借助代码校验,不用使用redis
五、JWTUtils工具类分享
1、图片分享,方便查看
image

2、可复制代码


public class JWTUtils {
private static final String jwtToken = "7758258!@###$$";

public static String createToken(Long userId){
    Map<String,Object> claims = new HashMap<>();
    claims.put("userId",userId);
    JwtBuilder jwtBuilder = Jwts.builder()
            .signWith(SignatureAlgorithm.HS256, jwtToken) // 签发算法,秘钥为jwtToken
            .setClaims(claims) // body数据,要唯一,自行设置
            .setIssuedAt(new Date()) // 设置签发时间
            .setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 60 * 1000));// 一天的有效时间
    String token = jwtBuilder.compact();
    return token;
}

public static Map<String, Object> checkToken(String token) {
    // 检查并验证给定的JWT令牌是否有效
    try {
        // 使用Jwt解析器解析JWT令牌
        Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token);

        // 返回JWT令牌的有效荷载部分(包含在JWT令牌的主体中的数据)
        return (Map<String, Object>) parse.getBody();
    } catch (Exception e) {
        // 在解析或验证过程中发生异常时打印异常堆栈跟踪
        e.printStackTrace();
    }

    // 如果无法解析或验证JWT令牌,则返回null
    return null;
}

}

标签:令牌,String,redis,JWTUtils,JWT,token,简单
From: https://www.cnblogs.com/senior-shef/p/17739119.html

相关文章

  • Redis 常见面试题总结
    什么是Redis?Redis(RemoteDictionaryServer)是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库。传统数据库遵循ACID规则。而Nosql(非关系型数据库)一般为分布式而分布式一......
  • 【4.0】Fastapi简单使用
    【一】Fastapi引入【1】构建基础的fastapi项目fromfastapiimportFastAPIfromtypingimportOptionalfrompydanticimportBaseModel#创建fastapi对象app=FastAPI()#定义模型表classCityInfo(BaseModel):#省份province:str#城市coun......
  • Redis实现分布式锁
    一、分布式锁参考资料:www.cnblogs.com/wangyingshu…很多场景中,需要使用分布式事务、分布式锁等技术来保证数据最终一致性。有的时候,我们需要保证某一方法同一时刻只能被一个线程执行。在单机(单进程)环境中,JAVA提供了很多并发相关API,但在多机(多进程)环境中就无能为力了。对于分......
  • springboot 与 Redis整合
    SpringBoot操作数据:Spring-datajpajdbcmongodbredis!SpringData也是和SpringBoot齐名的项目!说明:在SpringBoot2.X之后,原来使用的jedis被替换成了lettucejedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedispool连接池,更新BIO模式lettuce:采用ne......
  • JDBCTemplate 的简单使用
    什么是JDBCTemplateSpring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作使用JDBCTemplate1.在xml文件中配置 JdbcTemplate 对象,注入 DataSource(即数据库、数据源)<context:component-scanbase-package="transaction"/><beanid="dataSource"......
  • pnputil 是一个命令行实用程序,它用于管理 Windows 系统中的设备驱动程序。它提供了一
    pnputil是一个命令行实用程序,它用于管理Windows系统中的设备驱动程序。它提供了一种简单的方式来安装、卸载、列出和导出设备驱动程序。使用pnputil可以完成以下任务:安装设备驱动程序:将设备驱动程序添加到驱动程序存储库并安装它们。这对于管理员或高级用户来说是很有用的,......
  • Redis哨兵集群原理
    单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离主节点:可以对Redis实现读写操作从节点: 只可以对Redis实现读操作但是,当master节点宕机后,我们就不能写数据到Redis,所以需要搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集......
  • Go每日一库之161:grm(Redis Web管理工具)
    GRM是基于go+vue的web版redis管理工具,部署简单便捷,支持SSH连接,用户校验,操作日志、命令行模式、LUA脚本执行等功能。介绍基于go+vue的web版redis管理工具【Webredismanagementtoolbasedongolangandvue】功能清单管理连接(直连和SSH)、切换DB支持string/lis......
  • 实验一 C语言输入输出和简单程序编写
    实验任务一1#include<stdio.h>2#include<stdlib.h>3intmain()4{5printf("0\n");6printf("<H>\n");7printf("||\n");8printf("0\n");9print......
  • java中观察者模式的简单实现
    4要素:1观察者接口2具体的观察者3管理者接口4管理者实现类5调用1观察者接口包含观察者行为方法publicinterfaceObserver{/***当目标类发生变化时所执行的操作**/StringdoSomething();}2具体的观察者//具体观察者A@Slf4j@Component("ObserverA")pu......