mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-29 16:06:36 +08:00
增加登陆验证码,24小时流量统计
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package com.admin.controller;
|
||||
|
||||
import cloud.tianai.captcha.application.ImageCaptchaApplication;
|
||||
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
|
||||
import cloud.tianai.captcha.common.response.ApiResponse;
|
||||
import cloud.tianai.captcha.application.vo.ImageCaptchaVO;
|
||||
import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack;
|
||||
import cloud.tianai.captcha.validator.common.model.dto.MatchParam;
|
||||
import com.admin.common.dto.CaptchaVerifyDto;
|
||||
import com.admin.common.lang.R;
|
||||
import com.admin.entity.ViteConfig;
|
||||
import com.admin.service.ViteConfigService;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import cloud.tianai.captcha.application.vo.CaptchaResponse;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
/**
|
||||
* 验证码控制器
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping("/api/v1/captcha")
|
||||
public class CaptchaController extends BaseController {
|
||||
|
||||
@Resource
|
||||
ImageCaptchaApplication application;
|
||||
|
||||
private static final String[] OPTIONS = {
|
||||
"SLIDER", "WORD_IMAGE_CLICK", "ROTATE", "CONCAT"
|
||||
};
|
||||
|
||||
@PostMapping("/check")
|
||||
public R check() {
|
||||
ViteConfig viteConfig = viteConfigService.getOne(new QueryWrapper<ViteConfig>().eq("name", "captcha_enabled"));
|
||||
if (viteConfig == null) return R.ok(0);
|
||||
if (!Objects.equals(viteConfig.getValue(), "true")) return R.ok(0);
|
||||
return R.ok(1);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/generate")
|
||||
public CaptchaResponse<ImageCaptchaVO> genCaptcha() {
|
||||
ViteConfig viteConfig = viteConfigService.getOne(new QueryWrapper<ViteConfig>().eq("name", "captcha_type"));
|
||||
String captchaType;
|
||||
if (viteConfig == null || Objects.equals(viteConfig.getValue(), "RANDOM")) {
|
||||
captchaType = getRandomOption();
|
||||
}else {
|
||||
captchaType = viteConfig.getValue();
|
||||
}
|
||||
return application.generateCaptcha(captchaType);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/verify")
|
||||
public ApiResponse<?> verify(@Valid @RequestBody CaptchaVerifyDto verifyDto) {
|
||||
ApiResponse<?> response = application.matching(verifyDto.getId(), verifyDto.getData());
|
||||
if (response.isSuccess()) {
|
||||
return ApiResponse.ofSuccess(Collections.singletonMap("validToken", verifyDto.getId()));
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
public static String getRandomOption() {
|
||||
int index = ThreadLocalRandom.current().nextInt(OPTIONS.length);
|
||||
return OPTIONS[index];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user