Browse Source

用户模块 增加邮箱注册验证码

songfuqiang 2 years ago
parent
commit
16578e402c

+ 13 - 0
backend-common/src/main/java/constant/CommonConstant.java

@@ -126,6 +126,19 @@ public interface CommonConstant {
             "<p>如果无法点击,请将链接复制到浏览器地址栏,访问该地址进行重置</p>\n" +
             "<p>系统邮件,请勿回复。</p>";
 
+    String registerEmailTemplate = "<p><b>尊敬的PDF Reader用户,</b></p>\n" +
+            "\n" +
+            "<p>您正在注册长沙凯钿软件PDF Reader 平台账号,</p>\n" +
+            "\n" +
+            "<p>验证码是:<b>\"%s\"</b>,请复制该验证码并完成电子邮件验证过程,</p>\n" +
+            "\n" +
+            "<p>出于安全考虑,该验证码<b>3分钟内</b>有效,且只能使用一次,请及时输入。</p>\n" +
+            "\n" +
+            "<p>PS:如果没有验证码,您的账户将无法访问;如果您没有提交该请求,请忽略本条消息</p>\n" +
+            "\n" +
+            "<p>非常感谢您对PDF Reader的支持,祝您一切顺利</p>\n" +
+            "<p>长沙凯钿软件</p>";
+
     /**
      * 名称校验不通过信息
      */

+ 2 - 0
backend-core/src/main/java/cn/kdan/pdf/backend/core/constant/AuthConstant.java

@@ -114,6 +114,8 @@ public interface AuthConstant {
 
     Long VERIFY_CODE_KEY_EXPIRE_TIME = 15 * 60L;
 
+    Long EMAIL_VERIFY_CODE_KEY_EXPIRE_TIME = 3 * 60L;
+
     Long VERIFY_CODE_KEY_EXPIRE_TIME_FORGET = 15 * 60L;
 
     Long VERIFY_CODE_KEY_RESEND_TIME = 30 * 60L;

+ 1 - 1
backend-core/src/main/java/cn/kdan/pdf/backend/core/enums/CaptchaActionEnum.java

@@ -6,7 +6,7 @@ package cn.kdan.pdf.backend.core.enums;
 
 public enum CaptchaActionEnum {
     //注册用户
-    USER_REGISTER("0", "注册用户", ""),
+    USER_REGISTER("0", "注册用户", "PDF Reader - 验证您的电子邮件!"),
     //忘记密码
     FORGET_PASSWORD("1", "忘记密码", "17PDF Reader(Staging)账号密码重置");
 

+ 19 - 1
backend-core/src/main/java/cn/kdan/pdf/backend/core/service/impl/AuthServiceImpl.java

@@ -212,7 +212,10 @@ public class AuthServiceImpl implements AuthService {
             case EMAIL:
                 //忘记密码时邮箱验证 发送重置密码邮件
                 if (CaptchaActionEnum.FORGET_PASSWORD.value().equals(action.value())) {
-                    String content = String.format(CommonConstant.resetPasswordEmailTemplate, url + "resetPsw?verifyCode=" + code + "&account=" + receiver, action.action());
+                    String content = String.format(CommonConstant.resetPasswordEmailTemplate, url + "resetPsw?verifyCode=" + code + "&account=" + receiver);
+                    flag = emailUtils.sendMail(action.subject(), content, Collections.singletonList(receiver));
+                } else {
+                    String content = String.format(CommonConstant.registerEmailTemplate, code);
                     flag = emailUtils.sendMail(action.subject(), content, Collections.singletonList(receiver));
                 }
                 break;
@@ -222,7 +225,11 @@ public class AuthServiceImpl implements AuthService {
         //存入缓存
         if (flag) {
             if (CaptchaActionEnum.FORGET_PASSWORD.value().equals(action.value())) {
+                // 注册用户:verifyCode_1:{13433334444,code}
                 redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + action.value(), receiver, code, AuthConstant.VERIFY_CODE_KEY_EXPIRE_TIME);
+            }else{
+                // 注册用户:verifyCode_0:{test@qq.com,code}
+                redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + action.value(), receiver, code, AuthConstant.EMAIL_VERIFY_CODE_KEY_EXPIRE_TIME);
             }
             //再次发送计时
             redisUtils.hset(AuthConstant.VERIFY_CODE_TIME_OUT + action.value(), receiver, "1", AuthConstant.VERIFY_CODE_KEY_RESEND_TIME);
@@ -230,6 +237,17 @@ public class AuthServiceImpl implements AuthService {
         return flag;
     }
 
+    public static void main(String[] args) {
+        String code = CommonUtils.generateVerifyCode();
+        String receiver = "1048027277@qq.com";
+        String subject = "PDF Reader - 验证您的电子邮件!";
+        String content = String.format(CommonConstant.registerEmailTemplate, code);
+        System.out.println(content);
+        EmailUtils emailUtils = new EmailUtils();
+        boolean flag = emailUtils.sendMail(subject, content, Collections.singletonList(receiver));
+        System.out.println("发送邮件是否成功:" + flag);
+    }
+
 
     @Override
     public boolean checkExist(String key, String account, String code) {

+ 9 - 0
backend-core/src/main/java/cn/kdan/pdf/backend/core/service/impl/MemberServiceImpl.java

@@ -124,6 +124,15 @@ public class MemberServiceImpl implements MemberService {
                 // 验证成功删除验证码缓存
                 redisUtils.hdel(AuthConstant.VERIFY_CODE_KEY + CaptchaActionEnum.USER_REGISTER.value(), username);
             }
+        }else{
+            // 验证邮箱验证码
+            String verifyCode = redisUtils.hget(AuthConstant.VERIFY_CODE_KEY + CaptchaActionEnum.USER_REGISTER.value(), username);
+            if (!req.getVerifyCode().equals(verifyCode)) {
+                throw new BackendRuntimeException(AuthConstant.EXCEPTION_MSG_CODE_ERROR);
+            } else {
+                // 验证成功删除验证码缓存
+                redisUtils.hdel(AuthConstant.VERIFY_CODE_KEY + CaptchaActionEnum.USER_REGISTER.value(), username);
+            }
         }
 
         // 根据用户名查询数据库是否已有数据,判断该账号是否已注册过