zoukankan      html  css  js  c++  java
  • 2.02 开发注册功能

    注册功能的开发步骤

    • 访问注册页面
    • 提交注册数据到服务端
      • 服务端验证账号是否已存在、邮箱是否已注册过
      • 服务端发送激活邮件
    • 用户登录邮箱,点击链接激活注册账号(账号必须激活后才能登陆)

    注册用户代码实现

    dao

    @Mapper
    public interface UserMapper {
    
        int insertUser(User user);
    
    }
    

      

    <sql id="insertFields">
       username, password, salt, email, type, status, activation_code, header_url, create_time
    </sql> 
    
    <insert id="insertUser" parameterType="User" keyProperty="id">
       insert into user (<include refid="insertFields"></include>)
       values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
    </insert>
    

    service

        public Map<String, Object> register(User user) {
            Map<String, Object> map = new HashMap<>();
    
            // 空值处理
            if (user == null) {
                throw new IllegalArgumentException("参数不能为空!");
            }
            if (StringUtils.isBlank(user.getUsername())) {
                map.put("usernameMsg", "账号不能为空!");
                return map;
            }
            if (StringUtils.isBlank(user.getPassword())) {
                map.put("passwordMsg", "密码不能为空!");
                return map;
            }
            if (StringUtils.isBlank(user.getEmail())) {
                map.put("emailMsg", "邮箱不能为空!");
                return map;
            }
    
            // 验证账号
            User u = userMapper.selectByName(user.getUsername());
            if (u != null) {
                map.put("usernameMsg", "该账号已存在!");
                return map;
            }
    
            // 验证邮箱
            u = userMapper.selectByEmail(user.getEmail());
            if (u != null) {
                map.put("emailMsg", "该邮箱已被注册!");
                return map;
            }
    
            // 注册用户
            user.setSalt(CommunityUtil.generateUUID().substring(0, 5));
            user.setPassword(CommunityUtil.md5(user.getPassword() + user.getSalt()));
            user.setType(0);
            user.setStatus(0);
            user.setActivationCode(CommunityUtil.generateUUID());
            user.setHeaderUrl(String.format("http://images.nowcoder.com/head/%dt.png", new Random().nextInt(1000)));
            user.setCreateTime(new Date());
            userMapper.insertUser(user);
    
            // 激活邮件
            Context context = new Context();
            context.setVariable("email", user.getEmail());
            // http://localhost:8080/community/activation/101/code
            String url = domain + contextPath + "/activation/" + user.getId() + "/" + user.getActivationCode();
            context.setVariable("url", url);
            String content = templateEngine.process("/mail/activation", context);
            mailClient.sendMail(user.getEmail(), "激活账号", content);
    
            return map;
        }
    

      

    controller

        @RequestMapping(path = "/register", method = RequestMethod.POST)
        public String register(Model model, User user) {
            Map<String, Object> map = userService.register(user);
            if (map == null || map.isEmpty()) {
                model.addAttribute("msg", "注册成功,我们已经向您的邮箱发送了一封激活邮件,请尽快激活!");
                model.addAttribute("target", "/index");
                return "/site/operate-result";
            } else {
                model.addAttribute("usernameMsg", map.get("usernameMsg"));
                model.addAttribute("passwordMsg", map.get("passwordMsg"));
                model.addAttribute("emailMsg", map.get("emailMsg"));
                return "/site/register";
            }
        }
    

      

  • 相关阅读:
    python学习笔记--Django入门一 网页显示时间
    python学习笔记--easy_install和pip
    python学习笔记--Django入门0 安装dangjo
    Linux学习笔记总结--memcached配置
    python学习笔记--基础语法
    python学习笔记--导入tab键自动补全功能的配置
    Linux学习笔记总结--ssh认证登录
    ABAP 通过字段找表程序
    smod包含具体的增强(具体实施对象) / CMOD 包含一组smod编写的增强
    SE18 BADI定义 / SE19 BADI 实现
  • 原文地址:https://www.cnblogs.com/lpzh/p/12546827.html
Copyright © 2011-2022 走看看