Java Web 开发必须掌握的三个技术:Token、Cookie、Session

RAG开源框架深度评测:从RAGFlow到Dify的实战选型指南 本文深度评测了主流RAG开源框架(RAGFlow、Dify、WeKnora)的核心能力与实战表现,提供企业级选型指南。重点对比了文档解析、检索性能和生产部署等关键指标,揭示RAGFlow在复杂文档处理、Dify在低代码开发、WeKnora在腾讯生态集成的差异化优势,并给出技术选型决策树与成本优化方案。 阅读详情

在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。

Cookie

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用 实际上只能存储一小段的文本信息。

例如:登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是Cookie。

Session

Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的SessionID和Session内容,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息、固定变量等),这个数据可以保存在集群、数据库、文件中,用于跟踪用户的状态。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会为该用户创建一个SessionId,并在响应内容(Cookie)中将该SessionId一并返回给浏览器,浏览器将这些数据保存在本地。当用户再次发送请求时,浏览器会自动的把上次请求存储的Cookie数据自动的携带给服务器。

服务器接收到请求信息后,会通过浏览器请求的数据中的SessionId判断当前是哪个用户,然后根据SessionId在Session库中获取用户的Session数据返回给浏览器。

例如:购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息就用到了Session。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

 

 

Token

HTTP请求都是以无状态的形式对接。即HTTP服务器不知道本次请求和上一次请求是否有关联。所以就有了Session的引入,即服务端和客户端都保存一段文本,客户端每次发起请求都带着,这样服务器就知道客户端是否发起过请求。

这样,就导致客户端频繁向服务端发出请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否。而Session的存储是需要空间的,频繁的查询数据库给服务器造成很大的压力。

在这种情况下,Token应用而生。

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。当客户端第一次访问服务端,服务端会根据传过来的唯一标识userId,运用一些算法,并加上密钥,生成一个Token,然后通过BASE64编码一下之后将这个Token返回给客户端,客户端将Token保存起来(可以通过数据库或文件形式保存本地)。下次请求时,客户端只需要带上Token,服务器收到请求后,会用相同的算法和密钥去验证Token。

最简单的Token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由Token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接Token请求服务器)。

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  • 客户端使用用户名跟密码请求登录
  • 服务端收到请求,去验证用户名与密码
  • 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  • 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者数据库里
  • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

APP登录的时候发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果成功,以某种方式比如随机生成32位的字符串作为Token,存储到服务器中,并返回Token到APP,以后APP请求时,凡是需要验证的地方都要带上该Token,然后服务器端验证Token,成功返回所需要的结果,失败返回错误信息,让他重新登录。

对于同一个APP同一个手机当前只有一个Token;手机APP会存储一个当前有效的Token。其中服务器上Token设置一个有效期,每次APP请求的时候都验证Token和有效期。

 

 

下面这个例子,可以很好的理解:

『给我来份煎饼(token我是你对面摊卖烤冷面的,scope赊账)』『好』『鸡蛋(token我是你对面摊卖烤冷面的,scope赊账)』『好』『再加个鸡蛋(token我是你对面摊卖烤冷面的,scope赊账)』『好』最终得到一份普通煎饼,外加两个鸡蛋……如果服务器重启或者因为其他理由,服务器端已保存token丢失。那么用户需 要重新登录和认证。『给我来份煎饼(token我是你对面摊卖烤冷面的)』『那个……我没见过你』

这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“

加QQ群:611481448(名额有限哦!)

【深度学习】脸部修复,CodeFormer,论文,实战 Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。 阅读详情

相关推荐

稀疏数据分析:马蹄估计量及其理论性质

稀疏数据分析:马蹄估计量及其理论性质基本框架half-Cauchy分布为什么它叫马蹄估计量后验均值、shrinkage与κ\kappaκθ\thetaθ的边缘先验分布的阶马蹄估计的一致性收敛速率Clarke-Barron(1990)引理马蹄估计的最优收敛速率 这是对The horseshoe estimator for sparse signal这篇论文的回顾,这篇论文在Modern Bayesian statistics与Bayesian Machine Learning领域比较重要,它提出了一种新的先验

一个不愿透露姓名的博客 3804

简单说明一下Token ,Cookie,Session

在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超...

weixin_30482383的博客 473

40-基于STM32与LD3320的智能语音调光台灯开发全攻略(代码+硬件+调试心得)

本文详细介绍了基于STM32与LD3320的智能语音调光台灯开发全攻略,包括硬件设计、软件实现和调试心得。项目利用STM32单片机控制LD3320语音识别模块,实现语音控制开关和PWM调光功能,适合非接触式操作场景。文章还分享了硬件选型、PWM调光算法优化及常见问题解决方案,为开发者提供完整参考。

weixin_29163797的博客 326

JWT 实现登录认证 + Token 自动续期方案,这才是正确的使用姿势!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT ...

芋艿V 602

瑞芯微RK3588与FPGA的PCIe DMA通信性能优化实战

本文深入探讨了瑞芯微RK3588与FPGA之间PCIe DMA通信的性能优化实战。针对高速数据采集、AI推理等场景下的带宽瓶颈,文章从驱动配置、DMA描述符、中断处理、零拷贝技术及系统级调优等多个层面,提供了详细的优化策略与代码示例,旨在充分释放PCIe 3.0的理论带宽潜力,提升数据传输效率与稳定性。

sand8的博客 419

图解Self Attention:从输入到输出,一步步拆解QKV计算过程

本文通过图解方式,一步步拆解Self Attention机制中Q、K、V矩阵的计算过程。从输入向量开始,详细阐述了线性变换生成QKV、点积计算注意力分数、Softmax归一化权重以及加权聚合生成新表示的核心步骤,帮助读者直观理解Transformer架构的核心机制。

flink9streamer的博客 728

java webservice用户验证_使用java webservice的.net4.0 web app需要Usernametoken身份验证

我是使用.net 4.0 VS2010的新手。我需要使用java web服务并发送usernametoken自定义身份验证来访问服务,这是我很容易在VS2005中使用WSE2.0,那么在net 4.0中替换它是什么?我的客户端是.net 4.0 Asp.net Web应用程序(网站),服务是java webservice。谢谢在与谷歌叔叔核对之后,好吧,以下网站是一个起点WCF Security基...

weixin_35730840的博客 583

在 ABAP RAP 草稿模式中实现校验与 State Message:从业务规则到 Fiori 体验的全链路实践

本文深入探讨了SAP RAP框架中草稿业务对象的校验与消息机制,重点分析了validation、state message和transition message的应用场景及实现方法。文章指出,RAP校验机制可确保草稿数据的完整性,通过即时反馈防止错误数据进入激活态。同时详细比较了两类消息:state message(持久化)和transition message(临时性)的特点与适用场景。作者结合旅游预订案例,展示了如何在数据模型、行为定义和行为实现中配置校验规则,并给出工程实践中的常见误区与解决方案,如避

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

webservice接口token获取与验证

之前项目中用到了APP接口问题 在项目中一般会用到webservice与websocket来实现接口数据的接收与发送即信息的传递 web是实时接收发送数据 ---暂且不说 下面说下webservice接口的实现方式 --什么是webservice 链接https://baike.so.com/doc/5411995-5650117.html 下面来说下在Javaspring...

withawind的博客 8809

将物理信息神经网络(PINN)应用于微通道湍流的拓扑优化,并结合COMSOL数据进行训练与快速预测

本文提出一种基于物理信息神经网络(PINN)的微通道散热器流场快速预测方法。通过有限组COMSOL仿真数据训练神经网络,结合Navier-Stokes方程和能量方程作为物理约束,构建可快速预测新拓扑结构下速度场和温度场的替代模型。该方法包含数据准备、网络构建、损失函数设计等关键步骤,利用自动微分计算方程残差,显著降低传统CFD优化的计算成本,实现秒级/分钟级的流场预测,为微通道散热器拓扑优化提供高效解决方案。

huanghm88的专栏 536

optee技术简介

OP-TEE(Open Portable Trusted Execution Environment)是一种开源的可信执行环境(TEE),专为ARM TrustZone架构设计。TEE是一种独立的执行环境,运行在主操作系统之外,为敏感任务提供安全的计算空间,如加密、身份验证、密钥管理等。

baron-周贺贺-代码改变世界ctw 1279

基于httpServer的web服务器简易搭建+基于jwt的token鉴权 身份验证【java/postman】

使用用户名和密码去请求,通过算法生成token,但是token不存储在服务器,随后直接把token返回给客户端。一个token分为三个部分,第一部分是Header,第二部分是用户相关信息,第三个部分是签名,相当于一把锁,前两个部分通过HMAC-SHA256算法生成一把钥匙。 需要判断钥匙和锁是否匹配,但是不会直接拿密钥和签名对比,而是重新计算出一个签名(锁),比较两把锁是否相同。......

qq_43129107的博客 942

Python爬虫实战:基于最新技术爬取国家企业信用信息公示系统数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的国家企业信用信息公示系统爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、数据解析与存储等高级话题,最终实现一个完整的爬虫系统。文章包含大量实战代码示例,适合中高级Python开发者学习参考。网络爬虫(Web Crawler)是一种自动获取网页内容的程序,广泛应用于搜索引擎、数据分析和商业情报收集等领域。通用爬虫:如搜索引擎爬虫,广泛抓取互联网公开信息聚焦爬虫:针对特定领域或网站的数据采集增量式爬虫:只抓取更新内容,减少资源消耗。

2201_76125261的博客 2410

基于MAX14431BAEE+与PIC18LF4525的隔离SPI通信设计与实现

SPI通信在工业现场常受地电位差和电磁干扰影响,导致误码甚至芯片损坏。数字隔离器通过电容隔离技术,将信号调制到高频载波穿越隔离栅,实现电气隔离与信号传输,具备低延迟、高通道匹配和长寿命等优势。在电机控制、电力监测等强电弱电混合场景中,隔离SPI能显著提升通信可靠性。本文以MAX14431BAEE+和PIC18LF4525为例,详解隔离SPI的硬件设计、软件配置与调试要点,帮助工程师快速落地稳定方案。

weixin_34417200的博客 335

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java Web 开发必须掌握的三个技术:Token、Cookie、Session!

点击上方 "程序员小乐"关注公众号,星标或置顶一起成长每天早上8点20分,第一时间与你相约每日英文I'd rather live my life knowing th...

吧主 166

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【本人秃顶程序员】Java Web 开发必须掌握的三个技术:Token、Cookie、Session

←←←←←←←←←←←← 快,点关注! 在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器...

本人秃顶程序员的博客 715

fastadmin token 验证错误_Java Web 开发必须掌握的三个技术:Token、Cookie、Session

在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使...

weixin_39662594的博客 190
上一篇: Java性能优化的50个细节
下一篇: 为什么说 Java 程序员必须掌握 Spring Boot ?
java1856905
博客等级 码龄8年 100粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值