Session:会话保持的机制,session 是记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。
session的原理
1.浏览器向服务器发送登录请求(post),携带账号和密码
2.登录成功,服务器记录登录的状态,req.session.user = user; 服务器记录这些信息
3.服务器返回的响应头中携带 服务器生成的 sessionid(cookie中),身份标示
4.浏览器再次访问服务器的时候会通过cookie携带sessionid
5.服务器获取浏览器发送的sessionid后,在服务器查找sessionid,如果找不到,未登录
6.如果找到 sessionid,根据 sessionid 查找对应的对象,登录成功
session与cookie的区别
(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。
(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的
(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全
(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。