4.3 注册判断短信验证码4.3.1 实现思路 点击页面上的”获取短信验证码”连接,向后端传递手机号。后端随机生成 6 位数字作为短信验证码,将其保存在 redis 中(手机号作为 KEY),并发送到短信网关。 用户注册时,后端根据手机号查询 redis 中的验证码与用户填写的验证码是否相同,如果不同则提示用户不能注册。 4.3.2 生成验证码 (1)修改 pinyougou-user-interface 工程 UserService.java ,增加方法 [AppleScript] 纯文本查看 复制代码 /**
*生成短信验证码
*@return
*/
public void createSmsCode(String phone); (2)修改 pinyougou-user-service 工程的 UserServiceImpl.java [AppleScript] 纯文本查看 复制代码 @Autowired
private RedisTemplate<String , Object> redisTemplate;
/**
* 生成短信验证码
*/
public void createSmsCode(String phone){
//生成 6 位随机数
String code = (long) (Math.random()*1000000)+"";
System.out.println("验证码:"+code);
//存入缓存redisTemplate.boundHashOps("smscode").put(phone, code);
//发送到 activeMQ ....
} (3)在 pinyougou-common 添加工具类 PhoneFormatCheckUtils.java,用于验证手机号 (4)修改 pinyougou-user-web 的 UserController.java [AppleScript] 纯文本查看 复制代码 /**
*发送短信验证码
*@param phone
*@return
*/ @RequestMapping("/sendCode")
public Result sendCode(String phone){
//判断手机号格式
if(!PhoneFormatCheckUtils.isPhoneLegal(phone)){ return new Result(false, "手机号格式不正确");
}
try {
userService.createSmsCode(phone);//生成验证码
return new Result(true, "验证码发送成功");
} catch (Exception e) { e.printStackTrace();
return new Result(true, "验证码发送失败");
}
} (5) pinyougou-user-web 的 userService.js [AppleScript] 纯文本查看 复制代码 //发送验证码
this.sendCode=function(phone){
return $http.get("../user/sendCode.do?phone="+phone);
} (5) pinyougou-user-web 的 userController.js [AppleScript] 纯文本查看 复制代码 //发送验证码
$scope.sendCode=function(){
if($scope.entity.phone==null){
alert("请输入手机号!");
return ;
}
userService.sendCode($scope.entity.phone).success(
function(response){ alert(response.message);
}
);
} (7)修改页面 register.html [AppleScript] 纯文本查看 复制代码 < a ng-click="sendCode()" >获取短信验证码</ a>
|