文章内容速览
1. 访问注册界面
1.1 点击首页的注册,可以跳转到注册界面
将index.html中功能栏中的注册修改成下面语句,确保点击注册后可以跳转到注册界面(由register.html负责)
1.2 header复用
一些界面的header是相同的,为了方便,可以将index.html中的header取别名,然后在其他的html文件中利用该别名进行复用。
2. 提交注册数据 (Service开发)
2.1 创建两个工具函数
- 在util下新建CommunityUtil类
- 在该类中创建一个generateUUID()函数用来生成随机字符串
- 在该类中创建一个md5()函数用来对用户密码进行加密
2.2 配置域名
在application.properties中配置域名:
# community
community.path.domain=http://localhost:8080
2.3 开发注册业务
在service下的UserService类中进行注册业务开发
STEP1:对User进行判断
- 用户名不能为空
- 用户密码不能为空
- 用户邮箱不能为空
STEP2:对User进行验证
- 用户名是否存在
- 用户邮箱是否已被注册
STEP3:注册用户(保存用户的一些信息到服务器)
- 设置salt,用MD5对(salt + password)进行加密
- user.setType(0)
- user.setStatus(0)
- user.setActivationCode(CommunityUtil.generateUUID());设置激活码
- user.setHeaderUrl,设置用户头像
- user.setCreateTime,设置用户创建时间
- 将该用户信息保存到服务器
STEP4:发送激活邮件
- context设置变量值
- templateEngine将设置好的变量值传入模板activation.html
- 发送激活邮件
3. 激活注册账号 (Service开发)
在uitl下新建CommunityConstant接口,定义不同激活状态;
在UserService中讨论不同的激活情况;
激活重复
激活成功
激活失败
/**
* 邮件激活的业务逻辑.
*
* @return the int 返回操作状态码
*/
public int activation(int userId, String code) {
User user = userMapper.selectById(userId);
if (user.getStatus() == 1) {
return ACTIVATION_REPEAT;
} else if (user.getActivationCode().equals(code)) {
userMapper.updateStatus(userId, 1);
return ACTIVATION_SUCCESS;
} else {
return ACTIVATION_FAILURE;
}
}
4. Controller开发
- 在LoginController中注入userservice对象;
- userService.register(user)进行注册;
- 注册成功,返回operate-result.html,该界面有两个参数msg和target,通过model.addAttribute设置
- 注册失败,返回新的注册界面
注册成功的情况下,服务器会给用户发送一封激活邮件,点击激活邮件中的链接,会调用LoginController中的activation()对用户进行激活
- 激活成功,通过operate-result.html返回登陆界面
- 重复激活,通过operate-result.html返回首页
- 激活失败,通过operate-result.html返回首页