一、图片验证码验证流程回顾
上期已经实现了图片验证码的功能,我们来回顾一下大概流程:
1、 客户端生成一个唯一标识,然后发起图片验证码请求,请求路径中携带这个唯一标识,例如:http://localhost:8066/auth/code/image/039988e0-1994-11eb-8a54-abdddf75aa45
2、 服务端接收到获取验证码请求,读取请求路径中的唯一标识(例如:039988e0-1994-11eb-8a54-abdddf75aa45);生成4位随机数作为验证码,合成验证码图片(创建验证码);使用Redis存储验证码,唯一标识为key,验证码为value(存储验证码);将验证码图片返回给客户端(发送验证码);
3、 用户填写登录信息和验证码信息,提交登录表单,携带唯一标识。
4、 服务端拦截器拦截登录请求,获取唯一标识;读取Redis中的数据与用户输入的验证码比较,相同则放行,不同则抛出异常,用户登录失败;
5、 验证码校验通过后进入Spring Security拦截器,执行表单登录认证流程。
二、短信验证码实现与原理分析
今天我们要实现短信登录功能,大概流程和图片验证码类似: