会话控制就是弥补http无记忆的缺陷的一种技术
将数据持久化保存到服务器端或者浏览器端让浏览器和服务器进行多次数据交换时产生连续性
什么是cookiecookie是将数据持久化存储到浏览器(客户端)的一种技术
存储到用户浏览器的一段字符串 ,大小限制4kb以内
键值对的形式: 名 值 和几个可选属性 (有效期 安全性 可用范围)
特性:自动发送未过期的cookie ,不同域名下的cookie各自独立,cookie有过期时限(时效性)
浏览器第一次向服务器发送登录请求后服务器会返回给浏览器一个身份认证的cookie 通过响应头发送cookie给浏览器 浏览器拿到cookie后将它存储到浏览器中
下次向服务器发送请求时将保存的身份cookie通过请求头自动发送给服务器 服务器验证身份响应相应的内容
cookie不具有安全性 浏览器提供了读写cookie身份的api容易被伪造不建议服务器将重要的隐私数据通过cookie传递给浏览器
提升身份验证的安全性:
session工作原理
浏览器向服务器发送登录信息后服务器将身份信息形成session文件存储到服务器中并返回给浏览器一个cookie 这个cookie不是数据只是和数据有关的session编号 。浏览器存储cookie 再次发送请求时浏览器将未过期的cookie发送给服务器,服务器根据session编号找session数据验证 根据身份信息响应相应内容
cookie和session优缺点
cookie:优点是节省服务器空间缺点是不安全不能存储敏感信息
session:优点是安全缺点是需要占用服务器空间
有局限性需要用到cookie 但cookie不支持跨域访问需要很多额外的配置才能实现跨域session认证
前端请求后端接口 不涉及跨域推荐使用session认证
涉及跨域请求不推荐使用session 推荐使用jwt认证机制
jwt是目前比较流行的跨域认证解决方案
浏览器向服务器发送登录请求服务器验证数据 将数据加密之后生成token字符串将token给客户端浏览器把token保存到本地 客户端再次请求时通过请求头的Authorization字段将token发送给服务器 服务器解密还原成用户信息 验证
响应相应身份内容
组成部分:三部分 Header.Payload.Signature
.是分隔
用户信息在Payload
Header.Signature是安全性相关的部分 为了保证token的安全性
使用方式
客户端收到服务器返回的JWT之后会存储到loacalstorage或sessionStorage中此后客户端向服务器发送请求都要带上JWT字符串 进行身份验证
把JWT放在http响应头的Authorization字段中
Authorization:Bearer
安装JWT相关包
npm i jsonwebtoken express-jwt
jsonwebtoken 用来加密
express-jwt 用来解密



