Переглянути джерело

增加了注册, 发送邮件

xuexb 6 роки тому
батько
коміт
2b1bb02e44
21 змінених файлів з 245 додано та 96 видалено
  1. 12 1
      mooctest-user-server/pom.xml
  2. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/UrlConstants.java
  3. 1 4
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/MailServiceImpl.java
  4. 19 9
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/PageController.java
  5. 28 3
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/TestController.java
  6. 8 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java
  7. 95 21
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java
  8. 0 5
      mooctest-user-server/src/main/resources/application.yaml
  9. 1 0
      mooctest-user-server/src/main/resources/static/css/main.css
  10. BIN
      mooctest-user-server/src/main/resources/static/favicon.ico
  11. 0 0
      mooctest-user-server/src/main/resources/static/fonts/font-awesome-4.7.0/css/font-awesome.min.css
  12. 0 0
      mooctest-user-server/src/main/resources/static/fonts/iconic/css/material-design-iconic-font.min.css
  13. BIN
      mooctest-user-server/src/main/resources/static/images/icons/error.png
  14. BIN
      mooctest-user-server/src/main/resources/static/images/icons/sad.png
  15. BIN
      mooctest-user-server/src/main/resources/static/images/icons/success.png
  16. 7 0
      mooctest-user-server/src/main/resources/templates/common/common_foot.html
  17. 13 0
      mooctest-user-server/src/main/resources/templates/common/common_head.html
  18. 13 0
      mooctest-user-server/src/main/resources/templates/error_page.html
  19. 5 7
      mooctest-user-server/src/main/resources/templates/login.html
  20. 30 45
      mooctest-user-server/src/main/resources/templates/register.html
  21. 12 0
      mooctest-user-server/src/main/resources/templates/success_page.html

+ 12 - 1
mooctest-user-server/pom.xml

@@ -56,7 +56,12 @@
             <artifactId>spring-boot-starter-mail</artifactId>
             <version>1.3.8.RELEASE</version>
         </dependency>
-
+        <!-- SMS dependency -->
+        <dependency>
+            <groupId>cn.iselab</groupId>
+            <artifactId>ronglian-sms</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 
 
         <!--<dependency>-->
@@ -220,6 +225,12 @@
             <artifactId>httpclient</artifactId>
             <version>4.4.1</version>
         </dependency>
+        <!-- Apache commons validator -->
+        <dependency>
+            <groupId>commons-validator</groupId>
+            <artifactId>commons-validator</artifactId>
+            <version>1.4.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/UrlConstants.java

@@ -16,5 +16,5 @@ public class UrlConstants {
 
     public static final String API="/api/";
 
-    public static final String DFAULT_GOTO="http://www.mooctest.net";
+    public static final String DFAULT_GOTO="http://www.mooctest.net/user/info";
 }

+ 1 - 4
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/MailServiceImpl.java

@@ -16,9 +16,6 @@ import org.springframework.stereotype.Service;
 @Service
 public class MailServiceImpl implements MailService {
 
-    @Value("${spring.mail.username}")
-    private String sender;
-
     @Autowired
     private JavaMailSender mailSender;
 
@@ -28,7 +25,7 @@ public class MailServiceImpl implements MailService {
         message.setSubject(subject);
         message.setText(content);
         message.setTo(receiver);
-        message.setFrom(this.sender);
+        message.setFrom(sender);
 
         mailSender.send(message);
     }

+ 19 - 9
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/PageController.java

@@ -21,20 +21,27 @@ import javax.servlet.http.HttpSession;
  * @Date: 2018.12.21 11:51
  */
 @Controller
-public class PageController {
+public class PageController extends BaseController{
 
     @Autowired
     UserLogic userLogic;
 
-    String afterLogin = UrlConstants.DFAULT_GOTO;
-
     @RequestMapping(value = UrlConstants.PAGE + "login", method = RequestMethod.GET)
-    public String login(HttpServletRequest request, String afterLogin){
-        if(afterLogin!=null && afterLogin.trim().length()>0)
-            this.afterLogin = afterLogin;
+    public String login(String afterLogin, HttpServletRequest request){
+        System.out.println("\n"+afterLogin+"\n\n");
+        if(afterLogin!=null && afterLogin.trim().length()>0){
+            if(!afterLogin.startsWith("http"))
+                afterLogin = "http://"+afterLogin;
+        }else
+            afterLogin = UrlConstants.DFAULT_GOTO;
+
+        LOG.info("RedirectURL---" + afterLogin);
+
         HttpSession session = request.getSession();
+        session.setAttribute("redirectURL", afterLogin);
         if(session.getAttribute("userId")!=null){
-            return "redirect:"+this.afterLogin;
+            LOG.info("用户已登录!用户ID"+session.getAttribute("userId").toString());
+            return "redirect:"+afterLogin;
         }
         return "login";
     }
@@ -49,7 +56,9 @@ public class PageController {
             HttpSession session = request.getSession();
             session.setAttribute("userId", ((UserDTO)result.getData()).getId());
             // return "redirect:http://www.mooctest.net/api/test/login";
-            return this.afterLogin;
+            String afterLogin = session.getAttribute("redirectURL")==null?
+                    UrlConstants.DFAULT_GOTO:(String)session.getAttribute("redirectURL");
+            return "redirect:" + afterLogin;
         }
         else{
             model.addAttribute("result", result);
@@ -63,7 +72,7 @@ public class PageController {
     }
 
     @RequestMapping(value = UrlConstants.PAGE + "doregister", method = RequestMethod.POST)
-    public String doRegister(){
+    public String doRegister(Model model, UserDTO userDTO, HttpServletRequest request){
         return null;
     }
 
@@ -71,4 +80,5 @@ public class PageController {
 
 
 
+
 }

+ 28 - 3
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/TestController.java

@@ -2,12 +2,13 @@ package cn.iselab.mooctest.user.web.ctrl;
 
 import cn.iselab.mooctest.user.service.MailService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.rmi.MarshalledObject;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -42,4 +43,28 @@ public class TestController {
         mailService.sendNormalEmail("", "171256175@qq.com",
                 "[TEST]测试邮件", "这是一封测试邮件<a href='https://www.baidu.com'/>");
     }
+
+    @RequestMapping(value = "/test/error", method = RequestMethod.GET)
+    public ModelAndView errorPage(Model model){
+        model.addAttribute("message","老铁, 你的页面飞走了~");
+        return new ModelAndView("error_page");
+    }
+
+    @RequestMapping(value = "/test/success", method = RequestMethod.GET)
+    public ModelAndView successPage(Model model){
+        model.addAttribute("message","老铁, 你注册成功了~");
+        return new ModelAndView("success_page");
+    }
+
+    @RequestMapping(value = "/test/register", method = RequestMethod.GET)
+    public ModelAndView registerPage(){
+        return new ModelAndView("register");
+    }
+
+    @RequestMapping(value = "/test/get", method = RequestMethod.GET)
+    public String test(@RequestBody String afterLogin){
+        return afterLogin;
+    }
+
+
 }

+ 8 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.user.web.logic;
 
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.user.constants.ResponseStatus;
 import cn.iselab.mooctest.user.data.ResponseResult;
 
 import java.util.List;
@@ -35,4 +36,11 @@ public interface UserLogic {
 
     List<UserDTO> findByEmails(List<String> emails);
 
+    ResponseResult<UserDTO> registerAccount(UserDTO userDTO);
+
+    ResponseResult<UserDTO> activeAccount(String email);
+
+
+
+
 }

+ 95 - 21
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java

@@ -7,10 +7,12 @@ import cn.iselab.mooctest.user.model.User;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import cn.iselab.mooctest.user.service.IntegralService;
 import cn.iselab.mooctest.user.service.UserService;
+import cn.iselab.mooctest.user.util.EncryptionUtil;
 import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.user.web.logic.BaseLogic;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import cn.iselab.mooctest.user.web.wrapper.UserWrapper;
+import org.apache.commons.validator.routines.EmailValidator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -100,31 +102,52 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         }
         User user;
         try {
-            if (!userDTO.getEmail().isEmpty()) {
-                user = userService.findByEmail(userDTO.getEmail());
-                if (user.getPassword().equals(userDTO.getPassword())) {
-                    msg = "邮箱登录成功--用户名--" + user.getEmail();
-                    result.init(ResponseStatus.SUCCESS, msg, userWrapper.wrap(user));
-                    LOG.info(msg);
-                } else {
-                    msg = "邮箱登录失败--密码错误";
-                    result.init(ResponseStatus.FAILED, msg, userDTO);
-                    LOG.error(msg);
-                }
+            user = (!userDTO.getEmail().isEmpty())?
+                    userService.findByEmail(userDTO.getEmail())
+                    :userService.findByMobile(userDTO.getMobile());
+
+            if(user.getAvailability()!=1){
+                msg = user.getAvailability()==0?"该帐号未激活":"该帐号被删除";
+                result.init(ResponseStatus.FAILED, msg, userDTO);
+                LOG.error(msg+"-email:"+user.getEmail());
+                return result;
+            }
+            if (user.getPassword().equals(userDTO.getPassword())) {
+                msg = "登录成功--登录帐号--" + user.getEmail();
+                result.init(ResponseStatus.SUCCESS, msg, userWrapper.wrap(user));
+                LOG.info(msg+"-email:"+user.getEmail());
             } else {
-                user = userService.findByMobile(userDTO.getMobile());
-                if (user.getPassword().equals(userDTO.getPassword())) {
-                    msg = "手机登录成功--用户名";
-                    result.init(ResponseStatus.SUCCESS, msg, userWrapper.wrap(user));
-                    LOG.info(msg);
-                } else {
-                    msg = "手机登录失败--密码错误";
-                    result.init(ResponseStatus.FAILED, msg, userDTO);
-                    LOG.error(msg);
-                }
+                msg = "登录失败--密码错误";
+                result.init(ResponseStatus.FAILED, msg, userDTO);
+                LOG.error(msg+"-email:"+user.getEmail());
             }
+//
+//            if (!userDTO.getEmail().isEmpty()) {
+//                user = userService.findByEmail(userDTO.getEmail());
+//                if (user.getPassword().equals(userDTO.getPassword())) {
+//                    msg = "邮箱登录成功--邮箱--" + user.getEmail();
+//                    result.init(ResponseStatus.SUCCESS, msg, userWrapper.wrap(user));
+//                    LOG.info(msg);
+//                } else {
+//                    msg = "邮箱登录失败--密码错误";
+//                    result.init(ResponseStatus.FAILED, msg, userDTO);
+//                    LOG.error(msg);
+//                }
+//            } else {
+//                user = userService.findByMobile(userDTO.getMobile());
+//                if (user.getPassword().equals(userDTO.getPassword())) {
+//                    msg = "手机登录成功--手机号";
+//                    result.init(ResponseStatus.SUCCESS, msg, userWrapper.wrap(user));
+//                    LOG.info(msg);
+//                } else {
+//                    msg = "手机登录失败--密码错误";
+//                    result.init(ResponseStatus.FAILED, msg, userDTO);
+//                    LOG.error(msg);
+//                }
+//            }
         }catch (NullPointerException e){
             result.init(ResponseStatus.FAILED, "用户不存在", userDTO);
+            LOG.error(result.getMsg(),e);
         }finally {
             return result;
         }
@@ -197,4 +220,55 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         }
         return userWrapper.wrap(userService.findAllByEmails(emails));
     }
+
+    @Override
+    public ResponseResult<UserDTO> registerAccount(UserDTO userDTO) {
+        ResponseResult<UserDTO> result = new ResponseResult<>();
+        if(!userDTO.getEmail().trim().isEmpty() && !userDTO.getPassword().trim().isEmpty()) {
+            if(userService.findByEmail(userDTO.getEmail()) != null){
+                result.init(ResponseStatus.FAILED, "该邮箱已被注册", userDTO);
+                LOG.error(result.getMsg());
+                return result;
+            }
+            if (!EmailValidator.getInstance().isValid(userDTO.getEmail())){
+                result.init(ResponseStatus.FAILED, "注册邮箱非法", userDTO);
+                LOG.error(result.getMsg());
+                return result;
+            }
+            if (userDTO.getName().length()>50 || userDTO.getName().length()<2){
+                result.init(ResponseStatus.FAILED, "姓名长度非法,应在2~50位", userDTO);
+                LOG.error(result.getMsg());
+                return result;
+            }
+            if (userDTO.getPassword().length() > 16 || userDTO.getPassword().length() < 6){
+                result.init(ResponseStatus.FAILED, "密码长度非法,应在6~16位", userDTO);
+                LOG.error(result.getMsg());
+                return result;
+            }
+            try{
+                User user = userWrapper.unwrap(userDTO);
+                user.setAvailability(0);
+                user.setPassword(EncryptionUtil.encryptMD5(user.getPassword()));
+                userService.register(user);
+                result.init(ResponseStatus.SUCCESS, "注册成功!请前往登录!", userWrapper.wrap(user));
+            }catch (Exception e){
+                result.init(ResponseStatus.FAILED, "系统错误:注册失败", null);
+                LOG.error(result.getMsg(),e);
+                return result;
+            }
+
+        }else{
+            result.init(ResponseStatus.FAILED, "帐号和密码不可为空", userDTO);
+            LOG.error(result.getMsg());
+            return result;
+        }
+        return result;
+    }
+
+    @Override
+    public ResponseResult<UserDTO> activeAccount(String email) {
+        return null;
+    }
+
+
 }

+ 0 - 5
mooctest-user-server/src/main/resources/application.yaml

@@ -37,11 +37,6 @@ spring:
 #    session:
 #        stroe-type: redis
 
-    mail:
-        host: smtp.126.com
-        username: diors_po@126.com
-        password: xxb19970213
-        default-encoding: UTF-8
 
 
 

+ 1 - 0
mooctest-user-server/src/main/resources/static/css/main.css

@@ -244,6 +244,7 @@ iframe {
   height: calc(100% - 20px);
   bottom: 0;
   left: 0;
+  padding-bottom: 5px;
   padding-left: 13px;
   padding-top: 3px;
 }

BIN
mooctest-user-server/src/main/resources/static/favicon.ico


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
mooctest-user-server/src/main/resources/static/fonts/font-awesome-4.7.0/css/font-awesome.min.css


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
mooctest-user-server/src/main/resources/static/fonts/iconic/css/material-design-iconic-font.min.css


BIN
mooctest-user-server/src/main/resources/static/images/icons/error.png


BIN
mooctest-user-server/src/main/resources/static/images/icons/sad.png


BIN
mooctest-user-server/src/main/resources/static/images/icons/success.png


+ 7 - 0
mooctest-user-server/src/main/resources/templates/common/common_foot.html

@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<div th:fragment="foot">
+    <script th:src="@{/vendor/jquery/jquery-3.2.1.min.js}"></script>
+    <script th:src="@{/js/main.js}"></script>
+</div>
+</html>

+ 13 - 0
mooctest-user-server/src/main/resources/templates/common/common_head.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head th:fragment="head(title)">
+    <meta charset="UTF-8">
+    <title th:text="${title}">MOOCTEST</title>
+    <!--<title>MOOCTEST</title>-->
+    <link rel="stylesheet" type="text/css" th:href="@{/vendor/bootstrap/css/bootstrap.min.css}">
+    <link rel="stylesheet" type="text/css" th:href="@{/fonts/font-awesome-4.7.0/css/font-awesome.min.css}">
+    <link rel="stylesheet" type="text/css" th:href="@{/fonts/iconic/css/material-design-iconic-font.min.css}">
+    <link rel="stylesheet" type="text/css" th:href="@{/css/util.css}">
+    <link rel="stylesheet" type="text/css" th:href="@{/css/main.css}">
+</head>
+</html>

+ 13 - 0
mooctest-user-server/src/main/resources/templates/error_page.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common/common_head::head(title='错误提示')">
+    <!--<title>hhaaaaaaaa</title>-->
+</head>
+<body>
+    <div class="p-t-100" style="text-align: center;">
+        <img th:src="@{/images/icons/sad.png}">&nbsp;&nbsp;&nbsp;&nbsp;
+        <span class="font-weight-bold" style="font-size: 30px;" th:text="${message==null}?'对不起,出错了!!!':${message}"></span>
+    </div>
+    <div th:replace="common/common_foot::foot"></div>
+</body>
+</html>

+ 5 - 7
mooctest-user-server/src/main/resources/templates/login.html

@@ -6,7 +6,7 @@
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
-    <title>慕测统一登录</title>
+    <title>慕测平台</title>
     <meta name="keywords" content="" />
     <meta name="description" content="" />
 
@@ -41,17 +41,15 @@
                     <span class="focus-input100" data-symbol="&#xf190;"></span>
                 </div>
 
-                <div p-t-8 p-b-10>
-                    <div class="text-left" style="width: 50%; float: left;">
+                <div p-t-8 p-b-20>
+                    <div class="text-left" style="float: left;">
                         <a href="##">手机登录</a>
                     </div>
-                    <div class="text-right" style="width: 50%; float: right;">
+                    <div class="text-right" style="float: right;">
                         <a href="javascript:">忘记密码?</a>
                     </div>
-
-
                 </div>
-                <div class="text-center p-t-6 p-b-8">
+                <div class="text-center p-t-6 p-b-20">
                     <span style="color: red" th:unless="${result==null}" th:text="${result.msg}"></span>
                 </div>
                 <div class="container-login100-form-btn">

+ 30 - 45
mooctest-user-server/src/main/resources/templates/register.html

@@ -1,11 +1,4 @@
 <!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-<!DOCTYPE html>
 <html lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml"
       xmlns:th="http://www.thymeleaf.org">
 
@@ -34,60 +27,55 @@
                     <img style="width: 80px;" th:src="@{/images/mooctest.png}" >
                 </div>
 
-                <span class="login100-form-title p-b-30">MOOCTEST</span>
+                <span class="login100-form-title p-b-5">MOOCTEST</span>
 
-                <div class="wrap-input100 validate-input m-b-23" data-validate="请输入用户名">
-                    <span class="label-input100">邮箱</span>
-                    <input class="input100" type="text" name="email" placeholder="请输入用户名" required="邮箱账号不可为空">
+                <div class="wrap-input100 validate-input" data-validate="请输入邮箱">
+                    <!--<span class="label-input100">邮箱</span>-->
+                    <input class="input100" type="email" name="email" placeholder="请输入邮箱" required="邮箱不可为空">
                     <span class="focus-input100" data-symbol="&#xf206;"></span>
                 </div>
 
-                <div class="wrap-input100 validate-input" data-validate="请输入密码">
-                    <span class="label-input100">密码</span>
+                <div class="wrap-input100 validate-input " data-validate="请输入姓名">
+                    <!--<span class="label-input100">姓名</span>-->
+                    <input class="input100" type="text" name="email" placeholder="请输入姓名" required="邮箱不可为空">
+                    <span class="focus-input100" data-symbol="&#xf197;"></span>
+                </div>
+
+                <div class="wrap-input100 validate-input " data-validate="请输入密码">
+                    <!--<span class="label-input100">密码</span>-->
                     <input class="input100" type="password" name="password" placeholder="请输入密码" required="密码不可为空">
                     <span class="focus-input100" data-symbol="&#xf190;"></span>
                 </div>
 
-                <div p-t-8 p-b-10>
-                    <div class="text-left" style="width: 50%; float: left;">
-                        <a href="##">手机登录</a>
-                    </div>
-                    <div class="text-right" style="width: 50%; float: right;">
-                        <a href="javascript:">忘记密码?</a>
-                    </div>
-
-
+                <div class="wrap-input100 validate-input" data-validate="请输入密码">
+                    <!--<span class="label-input100">确认密码</span>-->
+                    <input class="input100" type="password" name="password2" placeholder="请确认密码" required="密码不可为空">
+                    <span class="focus-input100" data-symbol="&#xf190;"></span>
+                </div>
+                <div class="wrap-input100 validate-input" data-validate="请输入邮箱验证码">
+                    <input class="input100" type="password" name="password2" placeholder="请输入邮箱验证码" required="验证码不可为空">
+                    <span class="focus-input100" data-symbol="&#xf13a;"></span>
                 </div>
+
                 <div class="text-center p-t-6 p-b-8">
                     <span style="color: red" th:unless="${result==null}" th:text="${result.msg}"></span>
                 </div>
-                <div class="container-login100-form-btn">
+
+                <div class="container-login100-form-btn" style="width: 50%; float: left;">
                     <div class="wrap-login100-form-btn">
                         <div class="login100-form-bgbtn"></div>
-                        <button class="login100-form-btn">登 录</button>
+                        <button class="login100-form-btn">发送验证码</button>
                     </div>
                 </div>
-
-                <div class="txt1 text-center p-t-15 p-b-5">
-                    <span>第三方登录</span>
-                </div>
-
-                <div class="flex-c-m">
-                    <a href="#" class="login100-social-item bg1">
-                        <i class="fa fa-wechat"></i>
-                    </a>
-
-                    <a href="#" class="login100-social-item bg2">
-                        <i class="fa fa-qq"></i>
-                    </a>
-
-                    <a href="#" class="login100-social-item bg3">
-                        <i class="fa fa-weibo"></i>
-                    </a>
+                <div class="container-login100-form-btn">
+                    <div class="wrap-login100-form-btn">
+                        <div class="login100-form-bgbtn"></div>
+                        <button class="login100-form-btn">注 册</button>
+                    </div>
                 </div>
 
                 <div class="flex-col-c p-t-10">
-                    <a href="javascript:" class="txt2">立即注册</a>
+                    <a href="/page/login" class="txt2">已有帐号,立即登录</a>
                 </div>
             </form>
         </div>
@@ -97,7 +85,4 @@
 <script th:src="@{/vendor/jquery/jquery-3.2.1.min.js}"></script>
 <script th:src="@{/js/main.js}"></script>
 </body>
-
 </html>
-</body>
-</html>

+ 12 - 0
mooctest-user-server/src/main/resources/templates/success_page.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common/common_head::head(title='成功提示')">
+</head>
+<body>
+<div class="p-t-100" style="text-align: center;">
+    <img th:src="@{/images/icons/success.png}">&nbsp;&nbsp;&nbsp;&nbsp;
+    <span class="font-weight-bold" style="font-size: 30px;" th:text="${message==null}?'注册成功!请尽快接收验证邮件激活帐号!':${message}"></span>
+</div>
+<div th:replace="common/common_foot::foot"></div>
+</body>
+</html>

Деякі файли не було показано, через те що забагато файлів було змінено