会话跟踪技术
目录
- 会话跟踪
- JWT令牌
会话跟踪
- 会话:浏览器和服务器的一次链接称为会话,一次会话中可以包含多次请求
- 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一个浏览器,以便在同一次会话的多次请求之间共享数据
- 客户端会话跟踪:Cookie
- 一种http协议支持的技术:在第一次客户端请求服务器时,服务器自动将生成的Cookie通过响应头响应给客户端,客户端自动存储响应头中的Cookie,客户端在发起后续请求时自动通过请求头将Cookie携带到服务器端,服务器端判断Cookie中的值是否存在;Cookie中存储了一次会话中多次请求可以共享的信息
- 移动端无法使用Cookie;存储在浏览器客户端,不安全,用户可以自己禁用Cookie;Cookie不能跨域
- 跨域:两次请求的协议、Ip/域名、端口有任一存在差异,则称为跨域
- 服务器会话跟踪:Session
- 底层基于Cookie实现的技术:在第一次客户端请求服务器时,服务器将生成Session,并通过Cookie将Session的id响应给客户端,客户端将Session的id存储起来,然后在后续请求中通过Cookie将Session的id携带给服务器,服务器根据id从众多Session中找到当前请求对应的会话对象;Session中存储了一次会话中多次请求可以共享的信息
- 存储在服务端,安全,但是在服务器是集群的环境下无法使用(因为不同Session存储在不同服务器);存在Cookie同样的缺点,
- 令牌技术(企业项目常用)
- 客户端第一次请求时服务端生成令牌(本质是字符串),服务端将令牌响应给客户端,客户端后续请求中携带令牌到服务端,服务端校验令牌的有效性;令牌可以存储在客户端的任何存储介质中(不是非要保存在Cookie)
- 支持PC端、移动端;解决了集群环境下的认证问题;减轻服务器的存储压力;但是生成令牌、响应令牌、存储令牌、携带令牌、校验令牌等都需要自己实现
注:如何查看浏览器本地存储的Cookie、Session
JWT令牌
JSON Web Token:定义了一种简洁的、自包含的json格式,用于在通信双方以json数据格式安全地传输信息。由于存在数字签名,这些信息是可靠的(本质上是对原始的json格式进行了安全封装)
- 自包含:可以根据需要在json中存自定义的信息
浏览器访问登录请求成功后,服务器生成JWT令牌返回给浏览器,浏览器将令牌存储在本地的,并在后续的请求Header的token字段中携带令牌,服务器通过过滤器Filter拦击浏览器对资源的请求,在浏览器中做校验令牌的操作,校验通过则放行请求