1.短信使用三方接口,阿里云-官网
在auth服务上远程调用三方接口即可
1. 验证码的再次校验
- 将验证码存入redis中,因为它不是一个永久数据
- key可以是手机号,加上头
- value就是验证码,加上手机号
2. 接口防刷,防止恶意刷验证码
- 在验证码redis中的value上加上一个系统时间
- 判断系统时间和你要再次调用接口的时间,相差多少,
- 如果不满足60s,不能重新发送,需要返回一个异常状态(自定义)
- 满足程序就往下执行,实现发送验证码功能
3. 注册成功回到登录页面
-
直接重定向到登录页
-
定义一个Vo,实现数据存储校验
- 用户名-不能为空-通过@NotEmpty(message=“不能为空”)
- 用户名-校验length-通过@Length(min=“6”,max=“18”,message=“用户名是6-18位”)
- 密码-类似用户名
- 手机号-校验不能为空,校验正则表达式-@Pattern(regexp="",message="")
- 验证码-不能为空
4. 校验出错
返回到注册页面-用重定向
2. 密码加密
1. MD5加密
- 压缩性:不论多大的数据,加密以后都是固定长度
- 容易计算:从原数据计算处md5,很容易
- 抗修改性:对原数据只要有修改,他的md5值都不一样
- 强抗碰撞:两个不同的数据,使他们具有相同的md5值是非常困难的
2. MD5加盐
- 通过生成的MD5值和盐字符串进行组合
- 数据库同时存储MD5和盐值
3. *使用BCryptPasswordEncoder
-
通过密码加密器进行加密,
-
相同的数据,每次得到的值都不一样
-
通过方法可以确定,当前值和密码是否一致
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); //加密 String encode = passwordEncoder.encode("123456");//每次的生成的都不一致 //判断 boolean matches = passwordEncoder.matches("123456","数据库中的密文");