Cookie和Session
session id
每个用户都有自己的session, 不同用户之间session是隔离的,这个由所有的session插件或者tomcat服务器自己维护
分布式环境下用户信息保存到服务器的Session下就不靠谱了,不同节点的服务器sessioin数据并不会主动同步。
使用服务器自身的session注意问题
手机验证码的登录方式,一定要保证在当前用户去session中拿自己数据(也就是验证码)的时候一定是他获取验证码的那个手机号,也就是手机号和验证码一定要对应上。否则可能注册别人的手机号
【看如下操作】:
用户输入 手机号:131xxx,获取到验证码:9721
而在登录的时候修改了手机号 也就是 用户输入了新手机号:188xxx,验证码:9721
这样会登录/注册成功。显然是个BUG!
【解决办法】
修改session中保存的key value
由原来{"code", 9721}
修改为{"{用户获取验证码的手机号}", 9721}
ThreadLocal取代每次都从session中获取登录用户?
- 可以在同一线程中很方便的获取用户信息,不需要频繁的传递session对象。
问题: 使用tomcat服务器么? 如果tomcat 使用的线程池,那么线程复用的问题就可能存在,同一个ThreadLocal(final的),会不会产生数据的错乱呢?
肯定会错乱的,所以要在这次请求结束时 调用remove方法清除。