先去mvn库搜索commons lang包,找到Apache Commons Lang的相应信息复制到pom.xml。
还有,在applicaton.properties里添加域名配置(注册需要客户邮箱发送信息到服务器域名)
# community
community.path.domain=http://localhost:8080
在util包里新建一个类CommunityUtil,用UUID方法生成随机字符串并去掉里面的"-"。还有MD5加密。
// 生成随机字符串,可以作为盐、生成激活码等等
public static String generateUUID() {
return UUID.randomUUID().toString().replaceAll("-","");
//不要横线-,只要字符
}
//MD5加密
//hello -> abc123def456(还是太简单)
//hello+3e4a8 -> abc123def456abc(加盐)
public static String md5(String key) {
if(StringUtils.isBlank(key)) { //StringUtils是commons lang包里的方法
return null;
}
return DigestUtils.md5DigestAsHex(key.getBytes());
}
所以连起来的逻辑是,首先客户端访问register页面,通过表单提交新用户数据,调用了LoginController里的/register进而调用到userService里的register方法,判断参数是否正确,正确的话把新用户相关信息存起来并发送激活邮件、返回“注册成功”的提示信息(跳转到操作结果operate-result页面提示用户尽快激活而后跳转到目标页面/index),否则返回错误信息并仍跳转回注册页面。
这时当用户到邮箱点击激活链接,就调用了LoginController里的activation方法进而调用到userService里的activation方法,如果用户状态为1则返回提示“重复激活”并跳转到/index,否则如果用户的激活码等于链接的激活码则提示”激活成功“并跳转到/login,再不然则提示“激活失败”并跳转到/index。