Session 解决了什么问题?

一、服务器怎么判断用户的登录状态?
1、简单分为这么几步:
  • 用户通过浏览器访问网站,服务器接受到请求后,生成一个有时长限制的 秘密口令,返回给用户,同时服务器也有备份了 秘密口令;
  • 浏览器接受到 秘密口令 并保存到本地;
  • 用户再次使用浏览器发出请求时,会取出 秘密口令 一起发送给服务端;
  • 服务器接受到 秘密口令 后,就开始在备份中寻找,有没有相同的且没有过期的 秘密口令 。如果有,那么说明用户已经登录。

2、Session 与 Cookie
  • Session:是上面提到的 服务端 生成和存储 秘密口令 的过程;
  • Cookie:是上面提到的 浏览端 存储和发送 秘密口令 的过程;

二、具体实现过程
1、浏览器 怎么接收 服务器 生成的 秘密口令

浏览器 和 服务器 之间是通过 HTTP 或 HTTPS 协议进行传输数据的,那么就在 HTTP 协议的 Header 增加一个字段用来传输 秘密口令,这个字段就是 Set-Cookie,浏览器会自动保存此字段的数据。


2、服务器 怎么接收 浏览器 回传的 秘密口令

浏览器 会在 HTTP 协议的 Header 增加一个字段用来发送 秘密口令,这个字段就是 Cookie,服务器通过此字段来接收 秘密口令 并进行下一步操作。


3、怎么保证其传输的安全性?

为了增加安全性,就给这个 密码口令 增加了很多属性,譬如:Secure 、 HttpOnly、Domain、Path等,通常我们把 密码口令 + 属性 这个格式的数据称之为 Cookie。Cookie 使用有其相应的规则,详情看这里!


三、怎么使用 session 到项目中?

可以通过现有的一些 库 来增加session到项目中,下面推荐几个不同场景下的 session 库:


1、Redis

2、express-session

Node.js 项目中,如果使用了express 开发的 web 服务,可以使用他来实现session。


四、参考文档

你可能感兴趣的