1.首先用户输入账号密码,发送ajax请求和自定义token传递给网关
2.在网关中,增加变量用户的IP值和表示服务调用来源的一个变量(通过该变量判断是外部请求,请求服务还是服务与服务之间相互访问,实现了单点登录),放入header,一起传递到用户的服务中。
3.在用户服务中,首先访问redis,通过token查询UserLogin的值,如果为空,就从数据库查询,查询到后。往redis中写入(防击穿),一个Hash key存储手机号,一个Zset key存储过期时间。
4.如果redis中有UserLogin的值,那就比较账号跟密文(密码通过数据库的盐MD5加密的密文)是否正确,如果不正确,抛异常。
5.如果正确,从redis查询UserInfo的值,如果redis查询不到,就去数据库查询。
6.如果数据库存在,就把数据写入redis中(防击穿),设计过期时间30分钟,同时创建一个新的token一起返回给前端。
7.如果redis中存在,转换成UserInfo对象,把token也一起返回前端。
8.前端收到两个数据,存储在LocalStorage。