JAvaコードは簡単なメール検証コードの送信を実現し、検証コードに5分間の有効期間を設定し、1回の送信後60秒以内に繰り返し送信できないようにし、検証コードをsessionに置いて、入力した番号がさっき送信した番号と一致しているかどうかを判断する.
タイトルjavaコードは簡単なメール検証コード送信を実現し、検証コードをsessionに配置し、入力した番号がさっき送信した番号と一致しているかどうかを判断する.
controller
Serviceimpl
VerifyCodeVOパッケージ検証コード、携帯電話番号、最後の送信時間はsessionにあります
controller
package com.zl.controller;
import com.zl.service.IVerifyCodeService;
import com.zl.util.JSONResult;
import com.zl.bean.vo.SMSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class VerifyCodeController {
@Autowired
private IVerifyCodeService verifyCodeService;
@RequestMapping("sendVerifyCode")
@ResponseBody
public JSONResult sendVerifyCode(String phoneNumber){
JSONResult json=new JSONResult();
try{
verifyCodeService.sendVerifyCode(phoneNumber);
}catch (RuntimeException re){
json.setMsg(re.getMessage());
json.setSuccess(false);
}
return json;
}
}
Serviceimpl
package com.zl.service.impl;
import java.util.Map;
import java.util.Date;
import java.util.HashMap;
import com.zl.bean.util.UserContext;
import com.zl.bean.vo.VerifyCodeVO;
import com.zl.service.IVerifyCodeService;
import com.zl.util.BidConst;
import com.zl.util.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.springframework.stereotype.Service;
@Service
public class VerifyCodeServiceimpl implements IVerifyCodeService {
// accessKeyId
private String accessKeyId = "";
// accessKeySecret
private String accessKeySecret = "";
//
private String signName = "";
//
private String templateCode = "";
// 6 (int)Math.round(Math.random()*(0-1000000)+1000000)
/**
*
*
* @param phoneNumber
* @return ture ,false
*/
public void sendVerifyCode(String phoneNumber) {
VerifyCodeVO vc = UserContext.getCurrentVerifyCode();
if (vc == null || DateUtil.secondsBetween(new Date(), vc.getLastSendTime()) > 60) {
String verifyCode = Math.round(Math.random() * (0 - 1000000) + 1000000) + "";
// ascClient
DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
//
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS); POST
request.setMethod(MethodType.POST);
// ( )
request.setDomain("dysmsapi.aliyuncs.com");
// ( )
request.setVersion("2017-05-25");
// ( )
request.setAction("SendSms");
//
request.putQueryParameter("PhoneNumbers", phoneNumber);
//
request.putQueryParameter("SignName", signName);
//
request.putQueryParameter("TemplateCode", templateCode);
//
request.putQueryParameter("TemplateParam", "{\"code\":" + verifyCode + "}");
System.out.println("yzm_" + verifyCode);
try {
// ,
CommonResponse response = client.getCommonResponse(request);
// (Json )
System.out.println(response.getData());
// Json Map
Map<String, Object> map = getMapToJson(response.getData());
//
if (map.get("Code").equals("OK")) {
//
VerifyCodeVO verifyCodeVO = new VerifyCodeVO();
verifyCodeVO.setLastSendTime(new Date());
verifyCodeVO.setPhoneNumber(phoneNumber);
verifyCodeVO.setVerifyCode(verifyCode);
// Session
/*HttpSession session = request.getSession();
UserContext.putVerifyCode(verifyCodeVO);*/
// session.setAttribute("verifyCodeVO",verifyCodeVO );
UserContext.putVerifyCode(verifyCodeVO);
} else {
throw new RuntimeException();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(" ");
}
} else {
throw new RuntimeException(" ");
}
}
@Override
public boolean verify(String phoneNumber, String verifyCode) {
VerifyCodeVO vc=UserContext.getCurrentVerifyCode();
if(vc!=null
&& vc.getPhoneNumber().equals(phoneNumber)
&& vc.getVerifyCode().equalsIgnoreCase(verifyCode)
&& DateUtil.secondsBetween(new Date(), vc.getLastSendTime())<=BidConst.VERIFYCODE_VAILDATE_SECOND){
return true;
}
return false;
}
public String getTemplatecode() {
return templateCode;
}
/**
* Json map
* @param json
* @return
*/
public static Map<String, Object> getMapToJson(String json) {
JSONObject jsonObject = JSONObject.parseObject(json);
Map<String, Object> valueMap = new HashMap<String, Object>();
valueMap.putAll(jsonObject);
return valueMap;
}
}
VerifyCodeVOパッケージ検証コード、携帯電話番号、最後の送信時間はsessionにあります
package com.zl.bean.vo;
import java.util.Date;
import lombok.Getter;
import lombok.Setter;
/**
* , session
*
* @author Administrator
*
*/
@Getter
@Setter
public class VerifyCodeVO {
private String verifyCode;//
private String phoneNumber;//
private Date lastSendTime;//
}
VerifyCodeVO session
```java
package com.zl.bean.util;
import javax.servlet.http.HttpSession;
import com.zl.bean.Logininfo;
import com.zl.bean.vo.VerifyCodeVO;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
*
*
* @author Administrator
*
*/
public class UserContext {
public static final String VERIFYCODE_IN_SESSION = "verifycode_in_session";
/**
* request , RequestContextListener.requestInitialized
*
* @return
*/
private static HttpSession getSession() {
return ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest().getSession();
}
public static void putVerifyCode(VerifyCodeVO vc) {
getSession().setAttribute(VERIFYCODE_IN_SESSION, vc);
}
/**
*
*
* @return
*/
public static VerifyCodeVO getCurrentVerifyCode() {
return (VerifyCodeVO) getSession().getAttribute(VERIFYCODE_IN_SESSION);
}
}