分布式session @ Lin | 0001-01-01T00:00:00Z | 2 分钟阅读 | 更新于 0001-01-01T00:00:00Z

1.传统session

image-20210819104404146

session存在服务端tomcat里面,coockie存在客户端,请求过程如下:

image-20210819113513752

第一次请求的时候,服务端设置session操作,同时服务端会设置浏览器cookie(设置在响应头上,给浏览器)

image-20210819172639554

第二次请求的时候,请求头会带上cookie

image-20210819172935173

ps:由于cookie存储在客户端,可以被修改,相对于服务端session不安全

2.Spring-Session

image-20210819104132378

原理:对HttpServletRequest进行拦截,源码org.springframework.session.web.http.SessionRepositoryFilter.SessionRepositoryRequestWrapper

引入依赖:

image-20210819181627300

加配置

image-20210819181839747

3.Token + Redis

使用token自由度会比较高

代码示例:

image-20210819183927132

4.JWT

image-20210819184416567

JWT(Json web token),一种协议,其他语言也可用。

通过算法和自定义key会将用户信息加密生成一个token,通过base64编码将token发送给客户端,服务器不需要记录任何东西,每一个是无状态请求,通过解密来验证是否合法。

JWT:token里的内容可以被解析,但不能被篡改,敏感信息不能存在里面。

Spring-Session/Token+Redis 信息存储在服务端,泄露也解析不了

示列代码:

image-20210819210010606 image-20210819210056048

5.OAuth2

一种第三方授权机制,协议标准。

例如作为第三方去获取QQ,微信等账户名称、性别等信息。

image-20210819211616383

spring-security-oauth2:这个是授权数据给第三方、还可作权限管理。

© 2019 - 2024 Lin 的博客

Powered by Hugo with theme Dream.

avatar
关于我

Lin 的 ❤️ 博客

记录一些 🌈 生活上,技术上的事

职业是JAVA全栈工程师