会话管理
基础知识
cookie
http是简单的、可扩展的、无状态的、有会话的
在同一个连接中,两个执行成功的请求之间是没有关系的,用户没有办法在同一个网页里面做连续的交互。http cookies可以创建有状态的会话
本质就是让服务器记住浏览器
HTTP COOKIE就是服务器发送到用户浏览器就保存在本地的一小块数据,他会在下一次浏览器向服务器请求时被携带发送到服务器上
controller
@CookieValue注解意思是拿到key为“code”的cookie
cookie存储在浏览器里,不安全,不能存放隐私的东西
session
服务端记录客户端的session,session是依赖于cookie的
分布式部署使用session的问题
第一次请求,nginx代理传入服务器1,生成一个session
第二次请求,nginx代理传入服务器3,识别不了第一次产生的session
解决策略:
- 粘性session,统一ip始终访问同一个服务器,但是不能满足负载均衡
- 同步session,一个服务器产生session后同步给其他的服务器,但是会产生耦合
- 共享session,单体服务器容易挂
主流解决方式:
生成验证码
kaptcha
编写kaptcha配置类
生成随机字符随机图片
LoginController
login.html
现在刷新验证码不能点,写一段js
把context-path写到全局js里面,防止以后项目名称变化
这段js就是把id为kaptcha的这个标签的src改成path