spring security(二)
图形验证码和短信登录
1.图形验证码
原理(无法改变核心逻辑,用的是spring security的默认流程)
写一个filter对验证码进行逻辑处理。并在BrowserConfig中将自定义filter加在
UsernamePasswordAuthenticationFilter前面(ValidateCodeFilter extends OncePerRequestFilter);
OncePerRequestFilter是保证Filter只会被调用一次。
准备( 1.根据随机数生成图片,2.将随机数存到Session中,3.将生成的图片写到接口的响应中)
自定义图片验证码实体(ImageCode)
自定义异常(ValidateCodeException extends AuthenticationException(所有认证异常的基类))
自定义过滤器(ValidateCodeFilter extends OncePerRequestFilter)
自定义验证码控制器ValidateCodeController()
重构图形验证码接口(思想:以增量的方式去适应变化)
验证码基本参数可配置
验证码拦截的接口可配置
验证码的生成逻辑可配置
验证码基本参数可配置
实现InitializingBean的目的是在其他参数都装载完毕后初始化拦截的urls集合,
验证码拦截的接口可配置
验证码的生成逻辑可配置
记住我功能
2.短信验证码(和用户名密码登录的逻辑不一样,所以就不能用spring security默认的核心处理流程,可以模拟默认的核心处理流程写一套)
开发短信验证码接口
校验短信验证码并登录
重构代码
短信验证码接口模拟表单的核心处理图:
重构代码中的验证码的重构思想: