会话 控制

会话控制的介绍

会话控制是对数据的一种保护,防止其他人访问相同的地址可以随意修改数据,因为HTTP是一种无状态的协议,没有办法区分多次请求是否来自于同一个客户单,无法区分用户。而产品中又大量存在这样的需求,所以我们需要通过会话控制来解决该问题。
常见的会话控制有三种:
1.cookie 2.session 3.token

cookie

cookie是HTTP服务发送到用户浏览器并保存在本地的一小块数据。cookie 是保存在浏览器的一小块数据,cookie是按照域名划分保存的。
在这里插入图片描述
cookie是一些键值对。

cookie 的特点

浏览器想服务器发送请求时,会自动将域名下的cookie 设置在请求头中,然后传递给服务器。这个请求头的名字也叫cookie,所以可以将 cookie 理解为一个HTTP 的请求体也是可以的。

cookie 的运行流程

在这里插入图片描述
浏览器将自己的账号信息传递给服务器,服务器返回属于自己的cookie,服务器返回cookie的过程也是通过响应报文传递的,在响应报文中有一个特殊的响应头,叫做set-cookie,,在此响应头中去设置cookie的内容,返回给浏览器之后浏览器去解析响应报文,发现set-cook就知道set-cookie后面的内容就需要在本地做一个存储了,于是就把这个cookie信息保存在当前域名的cook下面。有了cookie之后,再次向服务器发送请求时,就会自动携带这个域名下面的cookie传递给服务器,服务器就可以通过对这个cookie的解析得知这个请求的发送者,从而识别用户。
在这里插入图片描述

express 中设置和删除cookie

在这里插入图片描述

获取cookie

对cookie 进行安装
npm i cookie-parser
在这里插入图片描述

session

session 的介绍

session 是保存在服务器的一块数据,保存当前访问用户的相关信息。
session的作用是实现会话控制,可以识别用户的身份,快速获取当前用户的相关信息。

session 的运行流程

浏览器将账户和密码传递给服务器,服务器会对数据跟数据库进行校验,校验通过后创建一个对象,这个对象叫做session,这个对象里保存着用户信息,而且会在这个对象中生成独一无二的标识id,然后将session_id的值通过响应头返回给浏览器。

在这里插入图片描述
然后服务器把这个id以响应cookie的形式返回给了浏览器,然后浏览器把cookie保存了起来,有了cookie,下次发送请求会自动携带cookie传递给服务器,服务器通过cookie 中的sid的值确定用户的身份。
在这里插入图片描述

express-session

npm i express session connect mongo
可以连接mongo数据库,将数据存储在数据库中
在这里插入图片描述

session 和 cookie 的区别

在这里插入图片描述

token

token 的介绍

token 是服务端生成并返回给HTTP客户端的一串加密字符串,token 中保存着用户信息
token 的作用:实现会话控制,可以识别用户的身份,主要用于移动端APP。而在网页中,cookie 和 session 用的比较多。

token 的工作流程

跟cookie 差不多。填写账号和密码校验身份,校验通过后响应token,token一般是在响应体中返回给客户端的。
在这里插入图片描述
返回给客户端之后,再次发送请求时,需要手动将token添加到请求报文中,一般是放在请求体中。token 是手动的,cookie 是自动的。
在这里插入图片描述

token 的特点

在这里插入图片描述
token 的数据存储在客户端,不像session存储在服务端,用户越多,存储在服务端的就越多,压力更大,所以token 的特点之一是服务端压力更小。

JWT

JWT(JSON Web Token)是目前最流行的跨域认证解决方案,可用于基于 token 的身份验证。我们可以使用 jsonwebtoken包 来操作token.
jwt.sign(数据,加密字符串,配置对象)。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值