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"; } }
本文来自博客园,作者:秋风扫落木,转载请注明原文链接:https://www.cnblogs.com/lpzh/p/12546827.html