Spring Bootによるメールボックス取得認証コードの登録

47201 ワード

前置きスキル:1.spring bootプロジェクトの作成(ブログリンク:クリックジャンプ)2.mybatisフレームワークの統合(ブログリンク:クリックジャンプ)3.ホットロード(必要ありませんが、テストプロジェクトを導入すると便利です.ブログリンク:クリックジャンプ)4.mybatisとspring bootに基づいてmysqlの削除変更(ブログリンク:クリックジャンプ)5.Spring Bootフレームワークによるメール送信を実現(ブログリンク:クリックジャンプ)
まず、フロントエンドページです.自分で書くことができます.次はフロントエンドテンプレートです.
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>    </p>
    <form id="message">
        <input name="userName" type="text" placeholder="     (       )"></br>
        <input name="password" type="password" placeholder="     "></br>
        <input name="code" type="text" placeholder="      "></br>
    </form>
    <input id="register" type="button" value="  ">
    <input id="getCode" type="button" value="     ">
</body>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    //      
    $('#getCode').click(function () {
        $.ajax({
            url:"/GetCodeController/getCodeController",
            data:$('#message').serialize(),
            success:function (data) {
                if(data==="success"){
                    alert("       ");
                }else{
                	alert("    ");
                }
            }
        })
    })
//     
    $('#register').click(function () {//$  #          id
        $.ajax({
            url:"/Register/register",//url        
            data:$('#message').serialize(),//$   #         from id
            success:function (data) {
                if(data==="success")alert("    ");
                else if(data==="nameError")alert("        ");
                else if(data==="passwordError")alert("        ");
                else if(data==="error")alert("     ");
                else if(data==="repeat")alert("      ");
                else alert("    ,     ");
            }
        })
    })
</script>
</html>

まず認証コードを送信するクラスで、pojoフォルダの下にSendMailクラスを作成します.コードは以下の通りです.setFromの内容は自分でメールを送信するメールボックスに変更してください.
package com.example.demo.pojo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

@Component
public class SendMail {
    @Autowired
    private  JavaMailSender mailSender;
    public  void sendMail(String To,String Text)throws Exception{
        try {
            SimpleMailMessage messege=new SimpleMailMessage();
            messege.setFrom("@qq.com");//        
            messege.setTo(To);
            messege.setSubject("  :   ");
            messege.setText(Text);
            mailSender.send(messege);
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("      ");
        }

    }
}


次に認証コードを取得するコントローラを書き、controllerフォルダの下にGetCodeControllerクラスを作成し、フロントエンドに記入されたメールボックスを取得して認証コードを送信します.コードは以下の通りです.
package com.example.demo.controller;

import com.example.demo.pojo.SendMail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/GetCodeController")
public class GetCodeController {
    @Autowired
    private SendMail sendMail;
    //     
    @RequestMapping("/getCodeController")
    @ResponseBody
    public String getCodeController(String userName,HttpServletRequest request){
        //     
        int code=(int)((Math.random()*9+1)*100000);
        try{
            //    session
            //       
            if(!Regular.isEmail(userName)||!Regular.isEmoji(userName))return "fail";
            request.getSession().setAttribute(userName,code);//            
            sendMail.sendMail(userName,String.valueOf(code));//         
        }catch (Exception e){
            e.printStackTrace();
            return "fail";
        }
        return "success";
    }
}


最後に登録プロセスです.フロントエンドで取得したメールボックスで検証コードがそのユーザーに送信された検証コードかどうかを判断すると、そのグループのデータをデータベースに追加します.コードは以下の通りです.
package com.example.demo.controller;

import com.example.demo.mapper.UserMapper;
import com.example.demo.pojo.User;
import com.example.demo.pojo.UserExample;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller  //        
@RequestMapping("/Register")//  ,  test       
public class Register {
    @Resource
    private UserMapper userMapper;
    @RequestMapping("/register")
    @ResponseBody
    public String register(String userName, String password, String code, HttpServletRequest request){//            input   name  
        if(userName==null||userName.length()==0||password==null||password.length()==0)return "fail";//        
        if(!Regular.isEmail(userName)||!Regular.isEmoji(userName))return "nameError";
        if(!Regular.isEmoji(password))return "passwordError";
        UserExample userExample=new UserExample();//             ,              
        userExample.createCriteria().andUserNameEqualTo(userName);
        List<User> userList=userMapper.selectByExample(userExample);
        for(int i=0;i<userList.size();i++){
            if(userList.get(i).getUserName().compareTo(userName)==0){//                
                return "repeat";
            }
        }
        try {
            try{
                if(request.getSession().getAttribute(userName)==null){
                    return "error";
                }
            }catch (Exception e){
                e.printStackTrace();
                return "error";
            }
            if(request.getSession().getAttribute(userName).toString().compareTo(code)!=0){
                return "error";
            }
            User user=new User();
            user.setUserName(userName);
            user.setUserPassword(password);
            userMapper.insert(user);
            return "success";
        }catch (Exception e){
            e.printStackTrace();
            return "fail";
        }

    }
}


メールボックスの正則を判断するために使用します
package com.example.demo.pojo;


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regular {
	public static boolean isEmoji(String email){
        if (email == null)
            return false;
        String rule="\\uD83C[\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F]|\\uD83D[\\uDE80-\\uDEFF]|[\\u2700-\\u27BF]\\uFE0F";
        Pattern pattern;
        Matcher matcher;
        pattern = Pattern.compile(rule);
        matcher = pattern.matcher(email);
        if (matcher.matches()){
            System.out.println("Yes");
            return false;
        }
        else
            return true;
    }
    public static boolean isEmail(String email) {
        if (email == null)
            return false;
        String rule = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
        Pattern pattern;
        Matcher matcher;
        pattern = Pattern.compile(rule);
        matcher = pattern.matcher(email);
        if (matcher.matches()){
            System.out.println("Yes");return true;
        }

        else
            return false;
    }
}