javaweb12-登录标记(会话技术与JWT令牌)

一、登录标记

1.会话技术(cookie和session)

cookie是浏览器存储数据!

1.1 cookie会话跟踪

cookie:服务器自动将cookie响应给浏览器,浏览器接收到响应的数据后,自动将cookie存储在浏览器本地;在后续请求当中,浏览器会自动的将cookie携带到服务端(在请求头中携带)。

在这里插入图片描述

Cookie进行会话跟踪最核心的两点:请求头和响应头!

响应头set-cookie是用来设置cookie数据(服务器端);请求头cookie用来携带cookie数据(浏览器端)。

优缺点如下:

优点缺点
HTTP协议中支持的技术移动端APP无法使用cookie
不安全,用户可以自己禁用cookie
cookie不能跨域

什么是跨域:从下图看出两个域名不同的服务器不能共享cookie。

在这里插入图片描述

1.2 session会话跟踪

session的底层还是基于cookie的。session是服务器存储数据(存储用户的详细信息,同时给用户分配一个sessionId),此时服务器就把 sessionId(重要) 返回给浏览器,后续再访问浏览器中的页面时就会在请求上自动带上sessionId,进一步服务器就知道哪个用户在操作了。

过程如下:

在这里插入图片描述
具体流程:

在登录认证成功后,服务器会创建一个唯一的JSESSIONID,并将相关的用户信息存储在HttpSession对象(服务器端)中,然后将JSESSIONID以setCookie的方式发送给客户端保存。客户端在后续的请求中会携带该Cookie,服务器通过解析Cookie中的JSESSIONID来获取对应的HttpSession对象,从而实现用户身份的认证和状态的保持。

过程详解:

①、这是服务器端的响应,通过session中添加一个(sessionid)key-value记录,在通过set-cookie设置。

在这里插入图片描述

②、可以看到浏览器端(客户端)存储了cookie信息。

在这里插入图片描述

③、浏览器端发送请求,可以看到传递了cookie的值

在这里插入图片描述

优缺点如下:

优点缺点
存储在服务器端,安全服务器集群环境下无法直接使用session
cookie的缺点

1.3 session与cookie对比

理解:

主要区别就是cookie在第一次请求后,服务端会 将用户的信息都包含在cookie中 响应给浏览器,浏览器后续请求,都会携带这个cookie,服务器端通过cookie中携带的数据区分用户。

而session是创建一个特殊的cookie,即sessionid,而其他信息都在服务器端,后续浏览器发送请求时,服务器端只会根据sessionid来区分不同用户。

所以说session是更安全,因为cookie有伪造的风险,因为数据都在浏览器本地。

2.令牌技术

浏览器发请求,执行登录操作,用户登录完成之后,生成一个jwt令牌,然后将令牌下发给客户端,客户端将令牌存储起来,在以后的每一次请求当中,将令牌携带(在请求头中)到服务端,服务器端接收到请求后,对请求进行统一拦截,获取到请求中的令牌,再校验真伪,若令牌无效直接相应错误结果,若有效,再让他去访问对应的业务接口。

在这里插入图片描述

2.1 组成

在这里插入图片描述

2.1 令牌生成和校验

Header和payload是base64编码,可以直接解码,最后一部分是数字签名部分。
在这里插入图片描述
校验如下:
在这里插入图片描述

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值