up:: 生成验证码存储到redis
说明:
我们的注册接口参数只有用户名和密码,显然不符合要求,还需要传入邮箱地址和邮箱验证码

开发注册接口验证
1.打开User的controller层,选择注册接口进行开发
/**
* 注册
*/
@PostMapping("/register")
@ResponseBody
public ApiRestResponse register(@RequestParam("userName") String userName,
@RequestParam("password") String password, @RequestParam("emailAddress") String emailAddress,
@RequestParam("verificationCode") String verificationCode) throws ImoocMallException {
if (StringUtils.isEmpty(userName)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_USER_NAME);
}
if (StringUtils.isEmpty(password)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_PASSWORD);
}
//密码长度不能少于8位
if (password.length() < 8) {
return ApiRestResponse.error(ImoocMallExceptionEnum.PASSWORD_TOO_SHORT);
}
if (StringUtils.isEmpty(emailAddress)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_EMAIL_ADDRESS);
}
if (StringUtils.isEmpty(verificationCode)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_VERIFICATION_CODE);
}
//如果邮箱已注册,则不允许再次注册
boolean emailPassed = userService.checkEmailRegistered(emailAddress);
if (!emailPassed) {
return ApiRestResponse.error(ImoocMallExceptionEnum.EMAIL_ALREADY_BEEN_REGISTERED);
}
//校验邮箱和验证码是否匹配
Boolean passEmailAndCode = emailService.checkEmailAndCode(emailAddress, verificationCode);
if (!passEmailAndCode) {
return ApiRestResponse.error(ImoocMallExceptionEnum.WRONG_VERIFICATION_CODE);
}
userService.register(userName, password, emailAddress);
return ApiRestResponse.success();
}
说明: 抛出的异常:

2.开发EmailService层,进行注册验证

说明: 抛出的异常:

反向生成接口:
Boolean checkEmailAndCode(String emailAddress, String verificationCode);3.修改mapper层,进行email字段插入

说明: 记得接口也要加上字段 UserService.java接口文件:
void register(String userName,String password,String emailAddress) throws ImoocMallException;注册验证测试
1.发送邮件,获取注册验证码

2.在注册用户模块添加email字段
1.验证码为空的请况

2.验证码错误情况

3. 验证码正确情况
因为只有60s的缓存时间,我们重新生成验证码测试

再来一次

可以看到已经成功
查看数据库
