会话跟踪方案:Cookie Session Token

news2024/11/26 17:34:00

什么是会话技术? 

Cookie

以登录为例,用户在浏览器中将账号密码输入并勾选自动登录,浏览器发送请求,请求头中设置Cookie:userName:'张三' ,password:'1234aa'  ,若登录成功,服务器将这个cookie保存下来,后续用户登录,服务器向客户端(即浏览器)发送之前存储的用户cookie自动登录。

 Session

底层还是用cookie,每个浏览器对应一个session,用户通过浏览器发送请求,请求头中携带sessionId来区分要访问哪个session

 令牌技术jwt

令牌格式 

前面两部分是基于Base64编码的,最后一部分是基于编码算法(这里是HS256)和密钥的 

 使用流程

以自动登录为例,用户输入账号密码后请求服务器进行登录,服务器查询数据库校验账号密码成功后生成令牌(token),并把token发给用户,浏览器要将这个令牌记录下来,后续发送请求时携带这个令牌。

后端人员需要做的事👇

编写生成token的方法,在请求响应成功后将token响应给服务端

1.导入依赖

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

<!--        基于java,需要引入这个-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.4.0</version>
        </dependency>

2.写一个JwtUtil

public class JwtUtil {
    private static final String secretKey="odpodpodp";//密钥  注意这个密钥不能太短
    private static final int  expireTime=3600*1000;//有效期为1小时   (单位:毫秒)

    //生成token
    public static String buildToken(int userId,String password){
        HashMap<String, Object> map = new HashMap<>();
        map.put("userId",userId);
        map.put("password",password);

        String token=Jwts.builder()
                .addClaims(map)//载荷(payload  即要加密的json字符串)   不是setClaims!!
                .signWith(SignatureAlgorithm.HS256,secretKey)//指定加密算法和密钥
                .setExpiration(new Date(currentTimeMillis()+expireTime))//设置有效期为1h
                .compact();//生成
        return token;
    }

    //jwt校验
    public static Claims parseJwt(String token){
        Claims claims = (Claims) Jwts.parser()
                .setSigningKey(secretKey)//指定密钥
                .parse(token)
                .getBody();//生成json格式的map
        return claims;
    }

}

前端人员需要做的事👇

浏览器可以把服务器响应的token以键值对的形式存储在localStorage中

后续发送请求时携带token到后端去解析

测试一下

控制器

@RestController
//登录注册模块控制器
@RequestMapping("login")
public class LoginController {
    @PostMapping("/testToken")
    public Result testToken(@RequestBody User user){
        int userId = user.getUserId();
        String password = user.getPassword();
        if(true)//校验账号密码的逻辑
        {
            String token = JwtUtil.buildToken(userId, password);
            System.out.println("token:"+token);
            //测试一下解码token
            System.out.println("解码token...");
            System.out.println(JwtUtil.parseJwt(token));

            return new Result(Code.RETURN_TOKEN_OK,"登录成功,返回token",token);
        }
        return new Result(Code.RETURN_TOKEN_FAIL,"登录失败,请验证账号密码",null);
    }
}

用postman访问接口

控制台输出

exp是还有多久过期

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

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

相关文章

「Python程序设计」基础语法:程序的注释、行与缩进

在我们编写程序代码的过程中&#xff0c;加入程序的注释&#xff0c;是一个很重要的过程。特别是对于软件工程来说&#xff0c;加入程序的注释&#xff0c;可以提高程序代码的可读性&#xff0c;让程序的维护难度降低。 程序注释的种类 首先要知道的是&#xff0c;程序的注释…

为什么要用云手机进行海外社交营销

随着科技的飞速发展&#xff0c;云手机这一新兴技术正逐渐在海外社交营销中占据一席之地。云手机的灵活性、成本效益和全球化特点使其成为海外社交营销中不可或缺的工具。本文将深入剖析云手机的优势&#xff0c;并探讨其在海外社交营销中的重要作用。 首先&#xff0c;云手机的…

Admin.NET源码学习(3:LazyCaptcha使用浅析)

Admin.NET项目前端登录页面的验证码图片默认使用动态图&#xff0c;且图形内容为阿拉伯数字运算&#xff08;如下图所示&#xff09;&#xff0c;用户输入正确的计算结果才能正常登录。项目采用LazyCaptcha模块生成验证码及动态图。   在Admin.NET.Core项目中添加了Lazy.Cap…

TOP刊录用接不接?初审仅1天,国人还友好,质量在线,3个月录用,光环直接拉满

【SciencePub学术】本期&#xff0c;给大家介绍的是1本工程机械类的SCI&#xff0c;位于JCR1区中科院1区TOP&#xff0c;影响因子4.5分。 本刊在机械设计和制造领域认可度极高&#xff0c;近年来影响因子逐步上升&#xff0c;这和稿件质量的大幅度提升有很大的关系。 MMT期刊发…

考驾照需要多长时间?你考驾照用了多长时间?

正常考驾照时长 有人问橙子&#xff1a;一个月可以拿到驾照吗&#xff1f; 答&#xff1a;理论上&#xff0c;一个月能拿到驾驶证。按照《机动车驾驶证申领和使用规定》显示&#xff0c;通过科目一10天后即可预约科目二&#xff0c;而通过科目二后同样需要10天后才能预约科目…

GitHub新手使用指南

第一节 GitHub新手使用指南 一、打包下载源码及资源 下载源码及资源不需要登录。 二、查看作者主页 第1步&#xff1a;点击作者头像 第2步&#xff1a;查看作者的项目 第3步&#xff1a;查看作者项目的基本信息 第4步&#xff1a;搜索项目 第5步&#xff1a;把代码复制到自…

Leetcode-高频面试题-143.重排链表

解法都在代码里&#xff0c;不懂就留言或者私信 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val …

Ajax基础案例

接口文档 欢迎使用 - AJAX阶段 地区查询 图解 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%

一、美联储9月降息预期升温 昨夜美股三大股指在震荡中收涨&#xff0c;市场情绪受到美联储7月会议纪要提振。纪要显示&#xff0c;美联储官员普遍倾向于9月降息&#xff0c;多位官员认为当前利率水平已对经济构成限制。此消息推动美股上涨&#xff0c;并带动金价创新高&#xf…

线程互斥锁

互斥锁 类型 pthread_mutex_t 互斥锁基本操作 函数描述[[pthread_mutex_initpthread_mutex_init]]初始化互斥锁[[pthread_mutex_lockpthread_mutex_lock]]阻塞申请互斥锁[[pthread_mutex_unlockpthread_mutex_unlock]]释放互斥锁[[pthread_mutex_trylockpthread_mutex_tryl…

全网最全PMP备考攻略(附答题技巧)

01为什么要考PMP 大家都是成年人&#xff0c;提出问题的目的是为了解决问题。所以问为什么&#xff0c;这个出发点就是错的。 你要知道&#xff0c;正确的知识必然是有用处的。 还是有人会觉得从小学到大学甚至研究生毕业&#xff0c;你学的东西都没有用武之地&#xff1f; …

写论文找不到灵感?ChatGPT能提供的一些帮助

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术写作过程中&#xff0c;许多读者常常会面临一个问题——找不到灵感。面对庞大的文献和复杂的研究方向&#xff0c;往往感到无从下手。随着人工智能技术的发展&#xff0c;像ChatG…

滚雪球学Java(88):连接无限,资源有度:JavaSE数据库连接池深度解析,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&#…

“探索消费增值模式:绿色消费与积分回馈的双重盛宴“

大家好&#xff0c;我是吴军&#xff0c;来自一家知名的软件开发企业&#xff0c;担任产品经理的角色。今天&#xff0c;我想和大家探讨一个新兴的商业模式——消费增值模式&#xff0c;它在市场上正逐渐崭露头角。 近年来&#xff0c;随着环保和可持续发展日益受到消费者的关注…

HT3S-ECS-MTP网关支持与倍福C6015控制器PLC环网通讯

倍福控制器C6015通过HT3S-ECS-MTP网关进行ETHERCAT环网通讯 北京中科易联科技有限公司 1、概述 本文描述倍福C6015控制器与网关HT3S-ECS-MTP测试EtherCAT环网&#xff0c;并进行数据交换的组态过程及运行结果。使用到的软硬件列表如下&#xff1a; 1台倍福C6015控制器, 使用…

【Qt笔记】Qt界面显示时间

目录 一、前言 二、基本概念 三、代码实现 1. 获取本地时间&#xff0c;并将其转换成自己想要的格式 2.创建一个QLabel控件用于显示时间字符串 3.创建QTimer定时器更新时间 四、优化 1. 格式优化 1.1 初始化 1.2 获取星期 1.3 更改格式 1.4 定时器超时函数 1.5 …

泛微基于华为仓颉编程语言开发公文交换系统 推动办公软件全面国产化

2024年6月21日下午&#xff0c;华为终端BG软件部总裁龚体先生在华为开发者大会主题演讲《鸿蒙原生应用&#xff0c;全新出发&#xff01;》中向全球开发者介绍了华为自研仓颉编程语言&#xff0c;并发布了HarmonyOS NEXT仓颉语言开发者预览版。这是华为首次公开发布仓颉编程语言…

比实物资产更重要的软硬件资产管理系统你了解吗?

“运筹帷幄之中&#xff0c;决胜千里之外。” 此言非但道出了战略谋划的重要性&#xff0c;亦在今日之商业世界&#xff0c;隐喻了信息管理对于企业竞争力的深远影响。 在数字化浪潮席卷全球的今天&#xff0c;企业的资产已不仅仅局限于厂房、设备、库存等实物形态&#xff0…

Console口密码又忘了?这样操作不尴尬

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 在日常的网络管理和维护工作中&#xff0c;Console端口是技术人员访问网络设备&#xff08;如路由器、交换机…

简单步骤获取IP地址SSL 证书

在网络安全中&#xff0c;SSL证书在保护用户浏览器和Web服务器之间交换的敏感信息方面发挥着至关重要的作用。 但是&#xff0c;如果您不仅想保护域名&#xff0c;还想保护特定的IP地址&#xff0c;该怎么办&#xff1f;您可以为IP地址获取SSL证书吗&#xff1f; 简短的回答是…