会话 控制

会话控制的介绍

会话控制是对数据的一种保护,防止其他人访问相同的地址可以随意修改数据,因为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(数据,加密字符串,配置对象)。
在这里插入图片描述

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cookies 是一种在客户端(通常是浏览器)存储信息的技术,用于在不同页面和浏览器会话之间保持持久状态。Cookies 可以用于会话控制,这是一种控制用户在应用程序中访问和执行操作的技术。 会话控制是 Web 应用程序中的一项关键技术,用于跟踪用户在应用程序中的活动和状态。会话控制技术允许应用程序跟踪用户访问的页面和执行的操作,并根据用户的身份和权限控制访问受限资源。 在 Cookies 中存储会话信息的最常见方法是将会话 ID 存储在 Cookies 中。当用户首次访问应用程序时,应用程序会创建一个唯一的会话 ID,并将其存储在 Cookies 中。在用户的后续请求中,应用程序将会话 ID 从 Cookies 中读取,并使用它来检索用户的会话数据。 以下是一个使用 Cookies 实现会话控制的示例: ``` <?php session_start(); // 检查用户是否已经登录 if (!isset($_SESSION['username'])) { // 用户未登录,跳转到登录页面 header('Location: login.php'); exit; } // 用户已经登录,显示欢迎信息 echo 'Welcome, ' . $_SESSION['username'] . '!'; ?> ``` 在上面的示例中,session_start() 函数用于启动会话。如果用户未登录,代码将重定向到登录页面。如果用户已登录,代码将显示欢迎信息。 要使用 Cookies 实现会话控制,需要确保以下几点: 1. 应用程序必须对会话 ID 进行加密和解密,以确保安全性。 2. 应用程序必须设置会话超时时间,以确保会话不会永久保留。 3. 应用程序必须使用安全的 Cookies,以确保 Cookies 不会被劫持或篡改。 总之,Cookies 是实现会话控制的一种常见技术,可以帮助应用程序跟踪用户在应用程序中的活动和状态,并根据用户的身份和权限控制访问受限资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值