src/main/java/cc/mrbird/febs/common/service/ValidateCodeService.java
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
package cc.mrbird.febs.common.service;
import cc.mrbird.febs.common.entity.FebsConstant;
import cc.mrbird.febs.common.entity.ImageType;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.properties.FebsProperties;
import cc.mrbird.febs.common.properties.ValidateCodeProperties;
import cc.mrbird.febs.common.utils.HttpContextUtil;
import com.wf.captcha.GifCaptcha;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.LocalDateTime;
/**
* 验证码服务,
* 如果febs.enable-redis-cache=true,则存redis,否则存session
*
* @author MrBird
*/
@Service
@RequiredArgsConstructor
public class ValidateCodeService {
private final FebsProperties properties;
private RedisService redisService;
@Value("${" + FebsProperties.ENABLE_REDIS_CACHE + "}")
private boolean enableRedisCache;
@Autowired(required = false)
public void setRedisService(RedisService redisService) {
this.redisService = redisService;
}
public void create(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpSession session = request.getSession();
String key = session.getId();
ValidateCodeProperties code = properties.getCode();
setHeader(response, code.getType());
Captcha captcha = createCaptcha(code);
String codeKey = FebsConstant.VALIDATE_CODE_PREFIX + key;
String codeValue = StringUtils.lowerCase(captcha.text());
if (enableRedisCache) {
redisService.set(codeKey, codeValue, code.getTime().getSeconds());
} else {
session.setAttribute(codeKey, codeValue);
LocalDateTime expireTime = LocalDateTime.now().plusSeconds(code.getTime().getSeconds());
session.setAttribute(FebsConstant.VALIDATE_CODE_TIME_PREFIX + key, expireTime);
后面还有 59 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读 AI
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
