cookie和session的关系、负载均衡如何实现session一致、会话如何建立

session:就是识别身份,解决用户身份(角色)问题
身份分两种:
1 有账号密码的那种身份
2 身份来源,例如客户机A与客户机B的请求就是两种身份
一个会话包括上下文信息:分两种信息
1 发送请求的这个用户自己的信息
2 服务器信息

cookie与session的关系

1 cookie记录在客户端,记录在浏览器
2 cookie是浏览器生成的,cookie脱离了浏览器就没有价值了
3 cookie是记录用户访问浏览器的必要信息,只要是http会话都会有cookie
4 cookie也是能做会话的,那为什么还要用session:为了安全
5 cookie很容易被篡改,大网站的cookie会经过加密
6 用cookie记录一个唯一键,这个唯一键是与远程服务器一致的,很多用户信息存在这个唯一键里,这个唯一键就是session
7 cookie的生命周期比session长,session的创建是基于cookie的,如果浏览器不设置cookie那么session是不生效的
8 如果做负载均衡那么多服务器的session是否一致?
用户访问的是服务器A,服务器给用户返回信息(包括唯一键信息),用户带着唯一键做下一个业务,请求到服务器,这个时候提示用户重新登录,其实就是访问到了第二台服务器B
出现这个问题的原因就是负载均衡多台服务器的时候,session不统一、不同步;就是session是存在于本地内存(服务器机器的本地,例如:内存、磁盘)的,服务器A与服务器B存储的同一个用户的session是不同的

8.1 那么负载均衡要如何实现session一致呢?

方式一: 做集中存储 例:MySQL、Redis…

把session的创建放在集中存储中,服务器A与服务器B都从集中存储中读取信息,读到的就是相同的session;session放在Redis里会增长查询效率
方式二: 用同步的方式实现
服务器A里的内容变更通知服务器B做相同变更

9 大厂大部分都是用cookie做会话,why?明明session更安全,为什么还用cookie

大厂都会有一个首页,这个首页是不属于任何业务线的,大部分的这种都是negx的静态页面的展示,然后每一个按钮背后就是一个业务线
一个首页背后有成千上万个业务团队,不可能同步成千上万个业务信息,那么对于这种情况就是用cookie传递登录信息;这个时候就是在cookie中做一些加密,让用户不能篡改
加密:
例如对于请求的来源加密:IP地址
HTTPS请求就是大部分在做解签、数据加密的工作

10 会话如何建立的

在这里插入图片描述

session与cookie任何一个过期,存放在cookie中的session都会过期
生命周期
cookie>session>request(一次请求、调用一次接口、调用一次服务)
request就是发一个请求服务器返回一个response,这个request就结束了
session是由很多个request不断的请求,在客户机遇服务器之间的会话,最后结束的
cookie只要用户不退出登录就在生命周期内(不包括设置的超时或者超时时间之后)

猜你喜欢

转载自blog.csdn.net/qq_41767337/article/details/89233190