发表于: 2018-01-28 22:29:01

1 608


今天完成的事情

1.完成有邮件激活功能的注册系统。

用户在注册页面填写邮箱地址信息,提交信息以后会收到激活确认邮件,点击链接就可以激活账号。

@RequestMapping(value = "/register",method = RequestMethod.POST)
public String registerpost(Student student) throws Throwable {
student.setPassWord(MD5.getMD5(student.getPassWord()));
   Date day = new Date();
   student.setCreateTime(day);
   student.setUpdateTime(day);
   //生成随机4位数的email_code
   String randomCode = RandomNumAndChar.getRandom(5);
   student.setEmailCode(randomCode);
   logger.info("注册用户信息"+student);
   studentMapper.insert(student);
   //发送激活邮件给用户
   SendEmail.send_common(student.getEmail(),student.getUserName(),randomCode);
   return "login";
}

发送的邮件中的链接包括username,和email_code.

//邮件内容
TextContent content = new TextContent();
content.setContent_type(TextContent.ScContentType.html);

String url = "http://localhost:8080/login?userName="+userName+"&email_code="+addressCode;
//String url = "https://www.baidu.com";
content.setText("<html><p>感谢注册,点击下面链接完成激活</p><a href='"+ url +"'>"+ url +"</a></html>");

用户点击这个链接可以跳转到登陆页面,根据传入的参数确认信息,更改账号状态为激活。

//登陆
@RequestMapping(value = "/login",method = RequestMethod.GET)
public ModelAndView logget(String userName,String email_code) {
//按照用户名查询用户,并对比email_code是否相同。
   Student student = studentMapper.selectByuserName(userName);
   System.out.println("查出来的用户" + student);
   //
   ModelAndView mav = new ModelAndView();
   if (student.getEmailCode().equals(email_code)) {
//如果ok,email_statues改为1,用户可以正常登陆。
       student.setAcountStatus(1);
       System.out.println("更改状态后的用户"+student);
       studentMapper.updateByPrimaryKeySelective(student);
       mav.addObject("message","激活成功!可以登陆");
   }else{
System.out.println("emailcode验证失败");
       //TODO 应该加一个失效时间。
       mav.addObject("message","激活码已过期");

   }
mav.setViewName("login");
   return mav;
}


遇到的问题:

1.邮箱中的链接点击以后被限制,点击继续访问也不能跳转,暂时没找到解决办法只能复制链接到地址栏。


收获

1.搞清了使用邮件确认用户并激活账号的流程。

2.学习了一个产生数字和字母组合字符串的方法:

public static String getRandom(int n){
String val = "";
   Random random = new Random();
   for (int i = 0; i < n; i++) {
//%取余,如果余数0,取"num"
       String str = random.nextInt(2) % 2 == 0 ? "num" : "char";
       //qualsIgnoreCase 忽略大小写
       if ("char".equalsIgnoreCase(str)) { // 产生字母
           //???????
           int nextInt = random.nextInt(2) % 2 == 0 ? 65 : 97;
           // System.out.println(nextInt + "!!!!"); 1,0,1,1,1,0,0
           val += (char) (nextInt + random.nextInt(26));
       } else if ("num".equalsIgnoreCase(str)) { // 产生数字
           val += String.valueOf(random.nextInt(10));
       }
}
return val;
}


明天的计划

1.添加数据校验。

2.异常处理。


任务7开始时间:2018.1.27

预计完成时间:2018.2.5

禅道:http://task.ptteng.com/zentao/project-task.html



返回列表 返回列表
评论

    分享到