目录
示意图:
cookie
1.什么是cookie
Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。
2.为什么要用cookie
由于http协议是一种无状态的协议(客户端和服务端互相不认识)
Cookies是一些存储在用户电脑上的小文件。它是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容。页面代码能够获取到Cookie值然后发送给服务器,比如Cookie中存储了所在地理位置,以后每次进入地图就可以默认定位到改地点。
3.cookie的原理
cookie的执行原理:就是当客户端访问服务器的时候(服务器运用了cookie),服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来,以后客户端每次访问服务器,都会自动的携带着这份cookie。
简单来说,就是当客户端访问服务器时,服务器会生成一个票据给客户端,当客户端收到票据的之后就保存起来,以后再访问服务器就会自动带着票据。
简易cookie原理示意图 如下图所示:
4.cookie的特点:
-
保存到客户端,容易被篡改(删除、禁用)
-
保存的数据量有限的
-
简单易懂好用
5.cookie的缺点:
- 保存在客户端,容易被篡改。
- 大小受限,本身最大4kb
session
1.什么是session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了session是一种特殊的cookie。cookie是保存在客户端的,而session是保存在服务端。
2.为什么要用session
由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?于是,这个时候,一种新的存储会话机制:session 诞生了
3.session原理
当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。
- 简易cookie原理示意图 如下图所示:
cookie和session的共同点
cookie和session都是用来跟踪浏览器用户身份的会话方式。
cookie和session区别
cookie是保存在客户端的
cookie有大小限制
session是保存在服务器端
session更加安全
session会比较占用服务器性能,当访问增多时应用cookie
JWT
1 概述:和session、cookie有什么钱区别?哪里更好?
1. JWT存放在客户端(前端),每次请求的请求头中,携带此JWT发送给服务器,服务器端负责接收和验证2. 服务器端可以不用存储JWT,这样可以降低服务器的内存的开销3. JWT和语言无关,扩展起来非常方便,无论是PC端还是移动端,都可以很容易的使用4. 不受cookie的限制
session和JWT的主要区别就是保存的位置,session是保存在服务端的,而JWT是保存在客户端的
2 结构
- Header,头部
- Payload,载荷
- Signature,签名
注意,把这三部分使用点(.)连接起来,就是一个 JWT 字符串
{ "typ" : "JWT" , "alg" : "HS256" }
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImphY2siLCJ1c2VyIjoiMjAyMjAxMDEiLCJyb2xlIjoiYWRtaW4ifQ.EsLwe5Nf4YkuwcLLqz7JC - PyfeviMPFLLxNsCp77KIM
在代码中,我们使用JWT封装的工具类,也可以完成此操作
3 使用
2. 编写JwtUtil.java工具类
3. 编写测试代码
4 JWT和swagger整合
注意: 1. 修改代码 createRestApi() 方法中扫描的包的位置