1.首先,把JS代碼拿出來看看
$(".btn-submit").click(function(){ var phone = $('#phone').val(); //手機號碼驗證 if(!(/^1[3456789]\d{9}$/.test(phone))){ layer.msg("手機號碼輸入有誤", {icon : 2,time:1000}); return false; }else{ //觸發定時器 settime(this); //異步發請求調用接口 var phone = $("#phone").val(); $.ajax({ url: '${baseurl }/getBizId', data:{phone:phone}, dataType: 'json', success: function(data){ },error : function(data) { } }); } });
首先驗證手機號碼格式。然后使用ajax提交請求
2.接下來展示后台代碼
2.1
阿里雲短信接口工具類
package com.muen.util; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.muen.pojo.SendSmsRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; /** * 阿里雲短信接口工具類 * */ public class SMSUtil { private static Logger logger = LoggerFactory.getLogger(SMSUtil.class); //產品名稱 static final String product = ""; /** * 產品域名 */ static final String domain = ""; /** * 對應你阿里雲賬戶的 accessKeyId */ private static final String accessKeyId = ""; /** * 對應你阿里雲賬戶的 accessKeySecret */ private static final String accessKeySecret = ""; /** * 對應簽名名稱 */ private static final String signName = ""; /** * 對應模板代碼 */ public static final String templateCode = ""; /** * 短信發送 * * @param telphone 發送的手機號 * @throws ClientException */ public static SendSmsResponse SendMessage(String telphone) throws ClientException { // 生成六位隨機數 StringBuffer stringBuffer = new StringBuffer(); for (int x = 0; x <= 5; x++) { /**默認值為1*/ int random = 1; if (x == 0) { /**第一個數 1到9*/ random = (int) (Math.random() * 9 + 1); } else { /**其它的 0到9*/ random = (int) (Math.random() * (10 - 1)); } stringBuffer.append(random); } String string = stringBuffer.toString(); //隨機六位數的驗證碼 int mobile_code = Integer.parseInt(string); System.out.println(mobile_code); // 設置超時時間 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //初始化acsClient DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient client = new DefaultAcsClient(profile); //組裝請求對象 SendSmsRequest request = new SendSmsRequest(); //請求方式:post request.setMethod(MethodType.POST); //待發送手機號 request.setPhoneNumbers(telphone); //短信簽名 request.setSignName(signName); //短信模板code request.setTemplateCode(templateCode); //模板內容${code}參數值 request.setTemplateParam("{\"code\":\"" + mobile_code + "\"}"); SendSmsResponse sendSmsResponse = null; try { sendSmsResponse = client.getAcsResponse(request); sendSmsResponse.setBizId(String.valueOf(mobile_code)); return sendSmsResponse; } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); logger.debug("SMSUtil", e.getMessage()); } return sendSmsResponse; } }
2.2
用戶登錄相關操作
package com.muen.controller.personalManage; import java.io.IOException; import java.util.*; import java.util.concurrent.ScheduledExecutorService; import com.muen.pojo.SendSmsRecord; import com.muen.util.StringUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.muen.controller.BaseController; import com.muen.pojo.PersonalBaseInfo; import com.muen.util.SMSUtil; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * 用戶登錄 * */ @Controller public class PersonalController extends BaseController { private Logger logger = Logger.getLogger(PersonalController.class); /** * 調用工具類獲取驗證碼 */ @RequestMapping(value = "/getBizId") @ResponseBody public void getBizId(String phone) throws ClientException { logger.info(phone + " <獲取驗證碼開始"); if (phone != null) { SendSmsResponse sendMessage = SMSUtil.SendMessage(phone); if (sendMessage != null) { logger.info(phone + " <獲取驗證碼成功"); logger.info(phone + " <短信記錄開始"); //發送驗證碼成功,記錄短信發送信息 SendSmsRecord sendSmsRecord = new SendSmsRecord(); sendSmsRecord.setTemplateID(SMSUtil.templateCode); sendSmsRecord.setAuthCode(String.valueOf(sendMessage.getBizId())); sendSmsRecord.setReceiveAccount(phone); sendSmsRecord.setSendTime(new Date()); sendSmsRecord.setStatus(1); //插入發送短信信息 sendSmsRecordService.addSendSmsRecord(sendSmsRecord); logger.info(phone + " <短信記錄結束"); HttpSession session = request.getSession(); //驗證碼 String bizId = sendMessage.getBizId(); session.setAttribute("phone", phone); session.setAttribute("bizId", bizId); //設置session的有效時間 24小時 session.setMaxInactiveInterval(60 * 60 * 24); try { //TimerTask實現10分鍾后從session中刪除bizId Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { //移除session存的驗證碼 session.removeAttribute("bizId"); timer.cancel(); } }, 60 * 1000 * 10); } catch (Exception e) { e.printStackTrace(); } } else { //發送驗證碼失敗,記錄短信發送信息 SendSmsRecord sendSmsRecord = new SendSmsRecord(); sendSmsRecord.setTemplateID(SMSUtil.templateCode); //失敗默認驗證碼值000000 sendSmsRecord.setAuthCode("000000"); sendSmsRecord.setReceiveAccount(phone); sendSmsRecord.setSendTime(new Date()); sendSmsRecord.setStatus(0); //插入發送短信信息 sendSmsRecordService.addSendSmsRecord(sendSmsRecord); logger.info(phone + " <獲取驗證碼失敗"); } } logger.info(phone + " <獲取驗證碼結束"); } /** * 用戶驗證碼登錄驗證 */ @RequestMapping(value = "/login") @ResponseBody public Map<String, Object> personalCenter(String phone, String code) throws ClientException, InterruptedException{ String openId = null; //從Cookie中獲取Openid Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ if(cookie.getName().equals("openId")){ openId = cookie.getValue(); /* String username = loginInfo.split(",")[0]; String password = loginInfo.split(",")[1]; request.setAttribute("username", username); request.setAttribute("password", password);*/ } } logger.info(phone + " <登錄開始"); Map<String, Object> data = null; if (phone != null && code != null) { //先判斷用戶是否已注冊 PersonalBaseInfo personal = personalService.getPersonalBaseInfo(phone); if (personal != null) { //判斷openid是否為空 if(personal.getOpenid() == null || personal.getOpenid() == ""){ personalService.updatePersonalOpenid(phone,openId); } //驗證登錄信息 data = validateLogon(phone, code); } else { //添加用戶信息 personalService.addPersonal(phone); //判斷openid是否為空 if(personal.getOpenid() == null || personal.getOpenid() == ""){ personalService.updatePersonalOpenid(phone,openId); } //驗證登錄信息 data = validateLogon(phone, code); } } return data; } /** * 登錄信息驗證 */ public Map<String, Object> validateLogon(String phone, String code) { Map<String, Object> data = new HashMap<String, Object>(); //返回給前台判斷登錄是否成功 boolean flag = false; boolean yzmflag = false; //session中存的用戶電話和驗證碼 String userPhone = (String) getSession().getAttribute("phone"); String bizId = (String) getSession().getAttribute("bizId"); //前台用戶輸入的電話和驗證碼和session中存的做對比 if (phone.equals(userPhone) && code.equals(bizId)) { PersonalBaseInfo personalInfo = personalService.getPersonalBaseInfo(phone); String idCard = personalInfo.getIdCard(); if (idCard != null) { personalInfo.setIdCard(idCard); } //session保存用戶信息 getSession().setAttribute("personalInfo", personalInfo); getSession().setAttribute("code", code); //設置session的有效時間 24小時 getSession().setMaxInactiveInterval(60 * 60 * 24); flag = true; //獲取用戶最后訪問的路徑地址 String path = request.getHeader("referer"); String headerPath = path.substring(path.indexOf('/', 7) + 1, path.length()); data.put("flag", flag); data.put("headerPath", headerPath); logger.info(phone + " >登錄成功"); } else { if (bizId == null) { yzmflag = true; data.put("yzmflag", yzmflag); data.put("flag", flag); logger.info(phone + " >驗證碼失效 >登錄失敗"); } else { data.put("yzmflag", yzmflag); data.put("flag", flag); logger.info(phone + " >驗證碼錯誤 >登錄失敗"); } } return data; } /** * 判斷是否登錄 登錄回到主頁,沒有登錄就返回登錄頁面 */ @RequestMapping("/admin") public String indexPage(HttpServletRequest request, HttpServletResponse response) { PersonalBaseInfo personalInfo = (PersonalBaseInfo) getSession().getAttribute("personalInfo"); PersonalBaseInfo personalBaseInfo = (PersonalBaseInfo) getSession().getAttribute("PersonalBaseInfo"); if (StringUtils.isBlank(personalInfo)) { if (StringUtils.isBlank(personalBaseInfo)) { return "login"; } else { return "Home/Index"; } } else { return "Home/Index"; } } /** * 退出登錄 */ @RequestMapping("/loginout") public String loginout(HttpServletRequest request, HttpServletResponse response) { //銷毀session getSession().invalidate(); return "login"; } /** * 跳轉到登錄頁面 */ @RequestMapping("/personal/login") public String replaceBind() { return "login"; } }
~~~~~~~~~~~~到這就完了。。。。。。