Servlet---Web会话跟踪 ▎token令牌

news2024/11/24 0:00:45

▍为什么要进行Web会话跟踪?

http请求是无状态的,不携带用户信息的,当用户登录成功后,之后在于服务器交互时,服务器并不知道是哪个用户发送的请求

▍Web会话跟踪

解决方法:在用户成功登录后,后端向前端响应token令牌(token令牌:用户信息),前端保存token令牌每次访问后端都先发送token令牌验证

参考资料:axios请求拦截器与添加器icon-default.png?t=N7T8https://blog.csdn.net/Dreamkidya/article/details/141333033?spm=1001.2014.3001.5501

 ▍token令牌

token需要加密我们就需要用到一个工具jwt

Jwt工具

   JWT就是用来生成token的一种方式,一种可以携带用户信息,并且可以设置秘钥加密的字符串,是安全的

第一步:安装jar包

        <!--jwt-->    加密
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.2</version>
        </dependency>

第二步:编写token生成类(直接引入)

package com.kid.dormServer.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.kid.dormServer.model.Admin;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * JWT工具类
 */
public class JWTUtil {

    /**
     * 根据用户id,账号生成token
     * @param admin
     * @return
     */
    public static String getToken(Admin admin) {
        String token = "";
        try {
            //过期时间 为1970.1.1 0:0:0 至 过期时间  当前的毫秒值 + 有效时间
            Date expireDate = new Date(new Date().getTime() + 3600*1000);
            //秘钥及加密算法
            Algorithm algorithm = Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE");
            //设置头部信息
            Map<String,Object> header = new HashMap<>();
            header.put("typ","JWT");
            header.put("alg","HS256");
            //携带id,账号信息,生成签名
            token = JWT.create()
                    .withHeader(header) //封装在一个map对象中
                    .withClaim("id",admin.getId())
                    .withClaim("account",admin.getAccount())
                    .withExpiresAt(expireDate) //过期时间
                    .sign(algorithm);//加密(加盐)
        }catch (Exception e){
            e.printStackTrace();
            return  null;
        }
        return token;
    }

    /**
     * 验证token是否有效
     * @param token
     * @return
     */
    public static boolean verify(String token){
        try {
            //验签
            Algorithm algorithm = Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE");
            JWTVerifier verifier = JWT.require(algorithm).build();
            DecodedJWT jwt = verifier.verify(token);
            return true;
        } catch (Exception e) {//当传过来的token如果有问题,抛出异常
            return false;
        }
    }

    /**
     * 获得token 中playload部分数据,按需使用
     * @param token
     * @return
     */
    public static DecodedJWT getTokenInfo(String token){
        return JWT.require(Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE")).build().verify(token);
    }

}

第三步:调取JWTUtil中的方法进行生成token

                String token = JWTUtil.getToken(admin);

第四步:将admin对象相应前端,保存在浏览器中

第五步:在vue组件中添加请求拦截器

请求拦截器icon-default.png?t=N7T8https://blog.csdn.net/Dreamkidya/article/details/141333033?spm=1001.2014.3001.5501

//axios 请求拦截,每当我们使用axios框架向后端发送请求时,都会经过拦截器
axios.interceptors.request.use(config => {
	//为请求头对象,添加 Token 验证的 token 字段
	config.headers.token = sessionStorage.getItem('token');
	return config;
})


 感谢大家的观看,本次分享就到这里。希望我的内容能够对您有所帮助。创作不易,欢迎大家多多支持,您的每一个点赞都是我持续更新的最大动力!如有不同意见,欢迎在评论区积极讨论,让我们一起学习、共同进步!如果有相关问题,也可以私信我,我会认真查看每一条留言。期待下次再见!

                                       希望路飞的笑容可以治愈努力路途中的你我!

博主vx:Dreamkid05 --->欢迎大家和博主讨论问题 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

药店药品进销存管理系统药品出库药品入库药品销售-社区医院药品管理-基于JAVA+vue开发

2.2 业务流程分析 在进行业务流程分析时&#xff0c;需要按照原有信息流动过程&#xff0c;逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求&#xff0c;弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态…

Hadoop 中的大数据技术:Zookeeper安装 (2)

目录 下载地址 本地模式安装 1&#xff09;安装前准备 2&#xff09;配置修改 3&#xff09;操作 Zookeeper 配置参数解读 Zookeeper 集群操作 集群规划 解压安装 配置服务器编号 配置 zoo.cfg 文件 集群操作 Zookeeper 集群启动停止脚本 创建脚本 增加脚本执行权限 …

EmguCV学习笔记 C# 6.1 边缘检测

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

【云原生】MySQL的源码编译

1、实验环境 &#xff08;1&#xff09;虚拟机版本&#xff1a;RHEL7.9 &#xff08;2&#xff09;主机 主机名称IP地址mysql-node1172.25.254.10mysql-node2172.25.254.20 2、实验步骤 注意&#xff1a;我们的两台主机都要进行MySQL源码编译&#xff0c;并且操作相同&…

二手物品交易boot代码

TOC springboot548二手物品交易boot代码--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可…

Leaflet+Leaflet-Geoman绘制天地图

安装所需依赖 yarn add leaflet geoman-io/leaflet-geoman-free文档地址 https://leafletjs.cn/ https://geoman.io/ <template><div id"map"></div><div class"handle"><button click"drawMap">绘制区块</b…

什么是生信分析?深入探讨生物信息学的技术、方法与广泛应用

介绍 生物信息学分析&#xff0c;简称生信分析&#xff0c;是一个结合了生物学、计算机科学、信息学和统计学的多学科领域&#xff0c;旨在处理、分析和解释海量的生物数据。随着现代生物技术的发展&#xff0c;尤其是高通量测序&#xff08;Next-Generation Sequencing, NGS&…

ArcGIS热点分析 (Getis-Ord Gi*)——七普地级市人口普查数据的热点与冷点分析

先了解什么是热点分析 ? 热点分析 (Getis-Ord Gi*) 是一种用于空间数据分析的技术&#xff0c;主要用于识别地理空间数据中值的聚集模式&#xff0c;可以帮助我们理解哪些区域存在高值或低值的聚集&#xff0c;这些聚集通常被称为“热点”或“冷点”&#xff0c;Gi* 统计量为…

LSI-9361阵列卡笔记

背景 要将raid0更改为JBOD直通模式 注意的点是要先将raid模式调整为JBOD之后重启机器&#xff0c;即可 备注&#xff1a;转换过程中硬盘中的数据未丢失。 步骤贴图 refer https://zhiliao.h3c.com/questions/dispcont/123250 https://blog.csdn.net/GreapFruit_J/article/…

Debian12安装jdk8环境

下载JDK8 下载页面&#xff1a;https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/ 笔者下载的是8u202&#xff1a; #wget https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz 解压安装 1、使用命令将压缩包复…

Golang | Leetcode Golang题解之第354题俄罗斯套娃信封问题

题目&#xff1a; 题解&#xff1a; func maxEnvelopes(envelopes [][]int) int {n : len(envelopes)if n 0 {return 0}sort.Slice(envelopes, func(i, j int) bool {a, b : envelopes[i], envelopes[j]return a[0] < b[0] || a[0] b[0] && a[1] > b[1]})f : …

旅游网站

TOC springboot281旅游网站 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行业&#xff0…

【今夕是何年】雅达利发布Atari 7800+游戏主机:配备无线手柄、HDMI接口

雅达利&#xff08;Atari&#xff09;发布了Atari 7800游戏主机&#xff0c;目前这款主机在其官方商城接受预定&#xff0c;售价129.99美元。Atari 7800游戏主机&#xff0c;作为Atari 7800系列的革新升级版本&#xff0c;搭载了高效的Rockchip 3128处理器&#xff0c;不仅确保…

Q*算法深度猜想:从Q-learning优化到智能决策

Q*算法深度猜想&#xff1a;从Q-learning优化到智能决策 引言 在强化学习&#xff08;Reinforcement Learning&#xff09;中&#xff0c;Q-learning算法作为一种无模型的学习方法&#xff0c;被广泛应用于解决各种决策优化问题。然而&#xff0c;尽管Q-learning在许多场景下…

基于YOLOv8的船舶目标检测与分割(ONNX模型)

项目背景 需求分析&#xff1a;在海洋监控、港口管理、海事安全等领域&#xff0c;自动化的船只检测与分割技术对于提高效率和安全性至关重要。技术选型&#xff1a;YOLOv8是YOLO系列的一个较新版本&#xff0c;以其速度快、准确率高而著称。使用ONNX&#xff08;Open Neural …

深入理解Softmax:从“Hard”到“Soft”的转变

深入理解Softmax&#xff1a;从“Hard”到“Soft”的转变 在机器学习的分类任务中&#xff0c;Softmax 函数是一个极其重要的工具。它不仅将神经网络的输出转化为概率分布&#xff0c;还能有效处理多分类问题。然而&#xff0c;为了更好地理解Softmax&#xff0c;我们可以先将…

漫画小程序源码全开源商业版

介绍&#xff1a; 漫画小程序源码全开源商业版 带漫画资源&#xff0c;带简单安装说明&#xff0c;可以快速发布一个漫画小程序。 代码下载

秋招力扣Hot100刷题总结——链表

1. 反转链表题目连接 题目要求&#xff1a;给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 代码及思路 遍历所有节点&#xff0c;将所有节点的next指向前一个节点由于要改变节点的next指向&#xff0c;而链表是单向的&#xff0c;因此需要…

Spring MVC域对象共享数据

在Spring MVC中&#xff0c;域对象&#xff08;Domain Object&#xff09;通常指的是与业务逻辑相关的模型对象&#xff0c;它们代表了应用程序中的核心数据结构。例如&#xff0c;在一个电商应用中&#xff0c;Product、User、Order等类可以被视为域对象。这些对象通常与数据库…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中&#xff0c;Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍&#xff1a; Pending&#xff08;待处理&#xff09;: 调度: Pod被创建后&#xff0c;首先进入“Pending”状态。此时&#xff0c;Kubernetes的调度器…