Session&Cookie&token

2023-11-20

一.Session

什么是Session?
服务器为了保存用户状态而创建的一个特殊的对象。

当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。

有状态和无状态的区别
基本概念:
有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。
无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。无状态服务不会记录服务状态,不同请求之间也是没有任何关系;http 协议是无状态的

  • 无状态服务(常见JWT)
  • 有状态服务(常见redis模拟session存储信息)

Session的缺点:

  • 当服务器访问量增加的时候,会存在很多Session,如果没有设置超时或者销毁的话,很容易造成服务器崩溃等状况。
  • 当服务端为集群或者分布式的时候,用户登陆其中一台服务器,会将session保存到该服务器的内存中,但是当用户的访问到其他服务器时,会无法访问,通常采用缓存一致性技术来保证可以共享,或者采用第三方缓存来保存session,不方便。

二.cookie

1. Cookie的工作原理
cookie是服务器保存在浏览器的一小部分文本信息,每个cookie都不能超过4kb。浏览器每次向服务器发出请求,就会自动附上这段信息。
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户
在这里插入图片描述
区别对比
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

三.token

1.token原理详解
是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。基于 Token 的身份验证方法
2.token使用流程
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的

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

四.JWT

在这里插入图片描述
jwt和token的区别
结论:
最直观的:token需要查库验证token 是否有效,而JWT不用查库或者少查库,直接在服务端进行校验,并且不用查库。
因为用户的信息及加密信息在第二部分payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是JWT自己实现的。
参考:token和JWT区别

五.localStorage

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Session&Cookie&token 的相关文章

随机推荐

  • 值得学习与推荐的c/c++框架和函数库

    这几天不上班 翻翻Evernote中记录的一些笔记 刚好有时间把记录的一些好玩链接转载一下 这篇文章里提到的很多库都用过 尤其是图像处理相关库 尤其是opencv及cximage 当时做图像算法时 很多算法就是从上面找来 然后自己修改的 比
  • 2023年咸阳市职业院校技能大赛网络搭建与应用赛项《网络搭建及安全部署竞赛报告单》

    2023年咸阳市职业院校技能大赛 网络搭建与应用赛项 网络搭建及安全部署竞赛报告单 二 交换配置与调试 90分 一 1 按照题上要求把填写下表 设备名称
  • 关于新手小白首次使用Git克隆仓库遇到的问题

    目录 前言 遇到的问题 1 Failed to connect to git hub com port 443 Timed out 解决方法 2 Could not read from remote repository 解决方法 总结 前
  • 抽奖的功能实现html,css,js

    效果图 代码实现
  • 2022年第十四届蓝桥杯模拟赛【核酸日期】C语言详解

    目录 题目 思路 代码实现 题目 核酸日期 问题描述 如果周一做核酸 周二显示核酸天数为 1 天 周三显示 2 天 以此类推 周六显示 5 天 周日显示 6 天 小蓝在某一天做了一次核酸 请问他的核酸显示为几天 已知做核酸和查看核酸不是在同
  • 顺序表

    线性表的顺序存储结构类型描述 define MaxSize 50 静态分配 typedef struct ElemType data MaxSize int length SqList define InitSize 100 动态分配 ty
  • FreeFileSync怎么用

    FreeFileSync自动镜像备份教程 自动同步备份软件 FreeFileSync 开源免费 有中文 我一般使用移动硬盘备份电脑数据 下载链接 https freefilesync org download php 1 启动FreeFil
  • window下Stable Diffusion一键安装

    轻松安装Stable Diffusion 一键搞定电脑Windows安装 AI绘图技术是当今最火热的技术之一 各种AI绘画软件也层出不穷 其中Stable Diffusion便是其中一款非常重要的 一 电脑Windows安装Stable D
  • ubuntu 16.04安装telnet 和 ssh2

    1 首先查看telnet运行状态 netstat a grep telnet 输出为空 表示没有开启该服务 2 安装openbsd inetd apt get install openbsd inetd 3 安装telnetd apt ge
  • ACE_Message_Block类 使用小结

    ACE Message Block用来封装 网络主机之间需要传输的数据 并能很好的管理动态内存分配 每个ACE Message Block对象都包括一个 带有引用计数 的ACE Da ta Block指针成员 该成员指向实际的数据 如果多个
  • python3+scrapy简单爬虫入门

    安装python 1 到官网下载选择对应版本进行安装 https www python org downloads release python 364 如果使用压缩包的话还需要配置环境变量 安装包见下图 2 安装完后 在cmd命令行下输入
  • mui ajax 下拉,mui下拉菜单

    mui下拉菜单 var page 1 最大页数 var maxPage Number MAX VALUE mui init pullRefresh container pullrefresh up auto true style circl
  • 最快的公共dns服务器_如何使用Google公共DNS服务器?

    最快的公共dns服务器 Google is a huge company that provides paid and free services It mainly operates in the IT and internet area
  • 论文笔记:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    cvpr2021 0 abstract Transformer 从NLP迁移到CV 会遇到两个挑战 语义物体 人 车 的尺寸有大有小 如果是像素级别的Transformer 那么resolution太大 为了解决上述的两个挑战 提出了swi
  • buck降压斩波电路

    文章目录 前言 1 斩波电路概述 2 Buck 降压斩波电路的理论计算 3 Buck 降压斩波电路的仿真 总结 前言 Buck 降压斩波器是实际使用数量最多的一类斩波电路 也是各大厂商开关电源芯片中种类最多一类 降压斩波电路的原理也相对易于
  • 超详细Hexo+Github Page搭建技术博客教程

    超详细Hexo Github Page搭建技术博客教程 前言 准备环境 安装 Hexo 注册 Github 配置 SSH key 部署到 Github 开始写作 SEO优化 代码同时部署到 coding 百度提交链接 百度站长平台添加网站管
  • Android JVM 原理简析

    当我们在开发 Android 应用程序时 我们实际上是在使用 Java 编程语言编写代码 并将其编译为在 Android 上运行的字节码 这些字节码最终在 Android 设备上的 Java 虚拟机 JVM 中执行 Android JVM的
  • android10官方支持机型,Andorid10.0支持哪些手机?附安卓10支持机型介绍

    Andorid10 0支持哪些手机 附安卓10支持机型介绍 2019 03 12 09 58 24 来源 qqtn com 扫码可以 1 在手机上浏览 2 分享给微信好友或朋友圈 摘要 Andorid10支持手机型号目前正在逐渐公布 许多小
  • c#窗体开发俄罗斯方块小游戏

    在个人电脑日益普及的今天 一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选 而俄罗斯方块游戏是人们最熟悉的小游戏知益 它趣味性极强 变化无穷 易上手等诸多特点得到了大众的认可 此外对运动的方块进行组合 可以训练玩家
  • Session&Cookie&token

    一 Session 什么是Session 服务器为了保存用户状态而创建的一个特殊的对象 当浏览器第一次访问服务器时 服务器创建一个session对象 该对象有一个唯一的id 一般称之为sessionId 服务器会将sessionId以coo