1、http协议有一个特性就是无状态,何为无状态。就是上一次的请求对这次的请求没有任何影响,服务端也不会对客户端上一次的请求进行任何记录处理。
2、http协议的无状态性带来的问题:用户登录后,切换到其他界面,进行操作,服务器端是无法判断是哪个用户登录的。 每次进行页面跳转的时候,得重新登录。
3、解决方案
3.1 token
待整理: 参考项目中的解决办法
每次用户调用登录接口的时候,就会根据UUID生成一个token, 然后把token和对应的UserInfo(用户信息)存入到redis中去,String类型,key是token,value是对应的UserInfo信息。并且最终会把生成的token返回给前端。下次请求其他操作的时候,会在请求的head中包含token信息。String token = UUID.randomUUID().toString();
待该用户请求其他界面操作的时候,首先拦截器会对请求进行拦截,如果不在白名单中的url请求,会先从请求的头部中获取到token值,然后根据token去redis缓存中获取UserInfo,如果不存在相应的UserInfo, 那么表明用户没有登录。直接返回请重新登录。否则就处理相关的请求。
在用户退出登录的时候,会根据退出登录中的token,做删除操作,删除redis中的用户信息,以及其他的信息。
待下次登录的时候,又会重新生成。
http无状态
页面之间的跳转是原生进行的,不同的操作对应不同的接口请求。如果
登录的时候,在服务器端使用uuid随机生成一个token
String token = UUID.rand