Cookie-Session的由来给大家说完了,我们看看基于Cookie这种方式的登录流程,
- 用户在浏览器输入用户名、密码,点击登录,发送请求到后台服务;
- 后台服务校验用户名、密码,将登录状态状态和用户id存储在session中;
- 将session的id存储在Cookie中,通过响应头返回到浏览器;
- 当用户点击其他功能时,向后台发送的请求中会自动带上Cookie;
- 后台通过Cookie中的jsessionid找到对应的session,开发人员可从session中取出当前会话的登录状态和用户id。
基于Cookie-Session机制的登录实现方式的整体流程就是这个样子。看上去很完美,但还是存在不少问题的,我们来看看这些问题。
分布式会话
上面的示例,我们的后台服务只有一个,一个服务往往很难支撑服务,为了保障可靠性,最少都是部署两个后台服务。但是当部署多个后台服务时,我们的session就会出现问题,看看下面的图,
- 假如用户登录的请求,分配到了后台服务1,后台服务1的session存了用户的登录状态和用户id。
- 用户在点击其他功能时,请求分配到了后台服务2,可是后台服务2的sessi