【仿牛客社区项目】09.注册功能开发

1. 访问注册界面

1.1 点击首页的注册,可以跳转到注册界面

将index.html中功能栏中的注册修改成下面语句,确保点击注册后可以跳转到注册界面(由register.html负责)
在这里插入图片描述

1.2 header复用

一些界面的header是相同的,为了方便,可以将index.html中的header取别名,然后在其他的html文件中利用该别名进行复用。
在这里插入图片描述

在这里插入图片描述

2. 提交注册数据 (Service开发)

2.1 创建两个工具函数

  1. 在util下新建CommunityUtil类
  2. 在该类中创建一个generateUUID()函数用来生成随机字符串
  3. 在该类中创建一个md5()函数用来对用户密码进行加密

2.2 配置域名

在application.properties中配置域名:

# community
community.path.domain=http://localhost:8080

2.3 开发注册业务

在service下的UserService类中进行注册业务开发

STEP1:对User进行判断

  1. 用户名不能为空
  2. 用户密码不能为空
  3. 用户邮箱不能为空

STEP2:对User进行验证

  1. 用户名是否存在
  2. 用户邮箱是否已被注册

STEP3:注册用户(保存用户的一些信息到服务器)

  1. 设置salt,用MD5对(salt + password)进行加密
  2. user.setType(0)
  3. user.setStatus(0)
  4. user.setActivationCode(CommunityUtil.generateUUID());设置激活码
  5. user.setHeaderUrl,设置用户头像
  6. user.setCreateTime,设置用户创建时间
  7. 将该用户信息保存到服务器

STEP4:发送激活邮件

  1. context设置变量值
  2. templateEngine将设置好的变量值传入模板activation.html
  3. 发送激活邮件

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开发

  1. 在LoginController中注入userservice对象;
  2. userService.register(user)进行注册;
  3. 注册成功,返回operate-result.html,该界面有两个参数msg和target,通过model.addAttribute设置
    在这里插入图片描述
  4. 注册失败,返回新的注册界面
    在这里插入图片描述

注册成功的情况下,服务器会给用户发送一封激活邮件,点击激活邮件中的链接,会调用LoginController中的activation()对用户进行激活

  1. 激活成功,通过operate-result.html返回登陆界面
    在这里插入图片描述
  2. 重复激活,通过operate-result.html返回首页
    在这里插入图片描述
  3. 激活失败,通过operate-result.html返回首页
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值