1.传统session
session存在服务端tomcat里面,coockie存在客户端,请求过程如下:
第一次请求的时候,服务端设置session操作,同时服务端会设置浏览器cookie(设置在响应头上,给浏览器)
第二次请求的时候,请求头会带上cookie
ps:由于cookie存储在客户端,可以被修改,相对于服务端session不安全
2.Spring-Session
原理:对HttpServletRequest进行拦截,源码org.springframework.session.web.http.SessionRepositoryFilter.SessionRepositoryRequestWrapper
引入依赖:
加配置
3.Token + Redis
使用token自由度会比较高
代码示例:
4.JWT
JWT(Json web token),一种协议,其他语言也可用。
通过算法和自定义key会将用户信息加密生成一个token,通过base64编码将token发送给客户端,服务器不需要记录任何东西,每一个是无状态请求,通过解密来验证是否合法。
JWT:token里的内容可以被解析,但不能被篡改,敏感信息不能存在里面。
Spring-Session/Token+Redis 信息存储在服务端,泄露也解析不了
示列代码:
5.OAuth2
一种第三方授权机制,协议标准。
例如作为第三方去获取QQ,微信等账户名称、性别等信息。
spring-security-oauth2:这个是授权数据给第三方、还可作权限管理。