package com.example.demo; import java.time.LocalDateTime; public class SmsCode { private String code; private LocalDateTime expireTime; public SmsCode(String code, int expireIn) { this.code = code; this.expireTime = LocalDateTime.now().plusSeconds(expireIn); } public SmsCode(String code, LocalDateTime expireTime) { this.code = code; this.expireTime = expireTime; } public boolean isExpire(){ return LocalDateTime.now().isAfter(expireTime); } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public LocalDateTime getExpireTime() { return expireTime; } public void setExpireTime(LocalDateTime expireTime) { this.expireTime = expireTime; } }
import org.springframework.web.context.request.ServletWebRequest; public interface ValidateCodeGenerator { ValidateCode generate(ServletWebRequest request); }
import org.apache.commons.lang.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.ServletWebRequest; import com.imooc.security.core.properties.SecurityProperties; import com.imooc.security.core.validate.code.ValidateCode; import com.imooc.security.core.validate.code.ValidateCodeGenerator; @Component("smsValidateCodeGenerator") public class SmsCodeGenerator implements ValidateCodeGenerator { @Autowired private SecurityProperties securityProperties; @Override public ValidateCode generate(ServletWebRequest request) { String code = RandomStringUtils.randomNumeric(securityProperties.getCode().getSms().getLength()); return new ValidateCode(code, securityProperties.getCode().getSms().getExpireIn()); } public SecurityProperties getSecurityProperties() { return securityProperties; } public void setSecurityProperties(SecurityProperties securityProperties) { this.securityProperties = securityProperties; } }
package com.example.controller; import com.example.valicate.SmsCode; import com.example.valicate.ValidateCode; import com.example.valicate.ValidateCodeGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.context.request.ServletWebRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Controller public class ValidateCodeController { @Autowired private ValidateCodeGenerator smsCodeGenerator; @GetMapping("/code/sms") private void CreateSmsCode(HttpServletRequest request, HttpServletResponse response) throws IOException{ // SmsCode smsCode = smsCodeGenerator.generate(new ServletWebRequest(request)); ValidateCode smsCode = smsCodeGenerator.generate(new ServletWebRequest(request)); } }
原文:https://www.cnblogs.com/mingforyou/p/14802535.html