一、问题场景
单点登录:对接方根据用户名称和密码进行MD5加密后传输过来,我方再根据用户名称和密码进行MD5加密,然后对比两个加密串,如果一样则成功。
出现问题:有天出现单点登录失败,对接方发送的数据都正常,查看日志发现同一时间有两个不同用户登录请求,第一个登录请求成功,第二个失败。
二、问题原因
查看我方MD5加密方法发现之前的开发人员将s_md5加密串定义成静态变量,再在方法里面判断是否为空,导致在并发情况下第二次MD5加密取到的s_md5还是第一次的数据,导致第二次登录请求的MD5加密串不正确登录失败。

修改后代码:
将s_md5改为方法内对象,每次调用都重新生成。
