添加验证邮件的返回方法

这就是验证邮件里面的链接需要访问的入口方法咯

  1. @Filters // 不需要先登录,很明显...
  2. @At("/active/mail")
  3. @GET
  4. @Ok("raw") // 为了简单起见,这里直接显示验证结果就好了
  5. public String activeMailCallback(@Param("token")String token, HttpSession session) {
  6. if (Strings.isBlank(token)) {
  7. return "请不要直接访问这个链接!!!";
  8. }
  9. if (token.length() < 10) {
  10. return "非法token";
  11. }
  12. try {
  13. token = Toolkit._3DES_decode(emailKEY, Toolkit.hexstr2bytearray(token));
  14. if (token == null)
  15. return "非法token";
  16. String[] tmp = token.split(",", 3);
  17. if (tmp.length != 3 || tmp[0].length() == 0 || tmp[1].length() == 0 || tmp[2].length() == 0)
  18. return "非法token";
  19. long time = Long.parseLong(tmp[2]);
  20. if (System.currentTimeMillis() - time > 10*60*1000) {
  21. return "该验证链接已经超时";
  22. }
  23. int userId = Integer.parseInt(tmp[0]);
  24. Cnd cnd = Cnd.where("userId", "=", userId).and("email", "=", tmp[1]);
  25. int re = dao.update(UserProfile.class, Chain.make("emailChecked", true), cnd);
  26. if (re == 1) {
  27. return "验证成功";
  28. }
  29. return "验证失败!!请重新验证!!";
  30. } catch (Throwable e) {
  31. log.debug("检查token时出错", e);
  32. return "非法token";
  33. }
  34. }
  • 限定为GET请求,这样邮件里面直接按就好了
  • 需要通过3DES解码token数据
  • 通过验证dao.update的更新条数来判断是否成功,这样就验证了userId和email是否匹配.