Session、Cookie 、Token、jwt

Cookie

浏览器在发起http请求的时候,服务器接收到请求后会发送一个cookie给浏览器。
Cookie不可跨域,每个cookie绑定一个域名,无法在别的域名下使用别的cookie
Cookie中有几个重要的属性:

属性说明
name=value键值对,设置Cookie的名称以及相对应的值,都必须是字符串
dimain指定Cookie所属的域名
path指定Cookie在那个路径下有效,比如设置了/abc,那么只有/abc下的路由才可以访问到改Cookie
maxageCookie失效的时间
httpOnly如果给cookie设置了这个属性,那么无法通过js 脚本读取Cookie信息。但还是能够通过Application手动修改Cookie,所以只能在一定程度上防止XSS攻击,但不是绝对安全

Session

Session是基于Cookie实现的另外一种客户端和服务器之间的会话机制
Session存在于服务器,SessionId会被存储到客户端的Cookie中。

Session实现流程:
在这里插入图片描述
以上流程可以看出,sessionId将cookie和session联系在一起

Token

1.Access Token

简单token的组成:uid(用户唯一的身份标识) time(当前时间戳),sign(签名 token的前几位以哈希算法压缩成一定长度的十六进制字符串)
特点:
服务器端无状态化,可拓展性好
支持移动设备
支持跨域调用
在这里插入图片描述

2. Refresh Token
refresh token 专门用于access token中的token ,如果没有 refresh token ,也可以刷新access token,但是每次都要用户输入用户名还有密码。但是refresh token可以减少这个额外的操作
在这里插入图片描述

access token 的有效期比较短,当access token 过期了的话,就要使用refresh token 获得新的token,如果 refresh token也失效了的话,就要重新登录了。

refresh token 存放在服务器的数据库里面,只有在申请新的accsee token 的时候,才会验证,也不需要像session一样保存大量的业务需求。

JWT

Json Web Token (jwt)目前前端最流行的跨域认证解决方案 是一种授权认证机制 可以通过URL,POST参 数或者在HTTP header发送,
jwt存储在客户端的cookie或者是localstorage中,

因为数据量小,传输速度也很快,因为包含用户信息,避免频繁调取数据库。
因为Token是以JSON加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持 不需要在服务端保存会话信息,特别适用于分布式微服务。

jwt 包含3部分: 头部header,有效信息payload,签名signature。格式形式: xxxx.yyy.zzz

1.header :通常标头有两部分组成:令牌类型(jwt)和所使用的签名算法

2.payload: 这一部分是有效负载,存储一些有关用户身份的有用的信息和其它数据的声明

3.ignature:jwt的前面两部分都是使用Base64进行编码的,前端用户可以进行解码看到的。signature需要使用Base64编码后的header和payload以及一个secret(私钥),其中这3部分内容共同使用header中指定的签名算法HS256进行签名。

将上面三部分通过点相连就组成了token,然后发到客户端,客户端只需要每次在请求头中放入这个token,后端通过密钥验证这个token的合法性,并且从Payload中获取用户不敏感的信息,进行后续处理

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值