我做的用户登录支持2种登录方式
用户名、密码
手机号、验证码
比如手机号+验证码方式,我使用到了redis、RabbitMq、阿里大鱼、jwt来实现这个功能
主要流程是:
1、用户输入手机号、我会判断手机号是否注册以及状态是否正常
2、正常,则发送验证码,在发送的时候我使用到了RabbitMq,在这里做了异步处理,加快相应效率
3、在Rabbitmq我使用的交换器是点对点模式,消息通过路由键发送到指定的队列
4、在另一个第三方为服务中,我会创建一个监听,用来监听这个队列
5、如果监听 监听到了消息的产生,则指定监听对应的方法,消息里面包含需要发送验证码的手机号、当然如果想要发送一个对象,还需要一个额外的配置,让RaabitMq来支持发送json对象,因为默认只支持byte数组或者基本类型。
6、在监听方法里,调用阿里大鱼发送短信
7、往redis中存入验证码,我使用的是string类型,key为手机号,value为验证码,并且给这个key设置了一个过期时间
8、我在根据用户输入的手机号和验证码进行判断
9、首先我会再次判断手机号状态是否正常
、再从redis中根据手机号来获取验证码,如果验证码不存在,提示“过期,从新获取”
、如果存在,则判断用户输入的验证码与redis中的验证码是否一致,不一致,则提示”验证码错误"
、如果一致,返回用户信息以及生产对应的jwt token