add CaptchaValid

This commit is contained in:
Timi
2025-11-02 10:23:31 +08:00
parent 8a7946ce01
commit 278bf7c59a
3 changed files with 79 additions and 9 deletions

View File

@ -0,0 +1,57 @@
package com.imyeyu.spring.annotation;
import com.imyeyu.spring.bean.CaptchaData;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
/**
* 图形验证码校验注解处理器
*
* @author 夜雨
* @since 2023-07-15 10:01
*/
@Aspect
public abstract class CaptchaValidAbstractInterceptor {
private boolean enable = true;
/** 注入注解 */
@Pointcut("@annotation(com.imyeyu.spring.annotation.CaptchaValid)")
public void captchaPointCut() {
}
/**
* 执行前
*
* @param joinPoint 切入点
*/
@Before("captchaPointCut()")
public void doBefore(JoinPoint joinPoint) {
if (!enable) {
return;
}
if (joinPoint.getSignature() instanceof MethodSignature ms) {
Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof CaptchaData<?> captchaData) {
// 校验请求参数的验证码
verify(captchaData.getCaptchaId(), captchaData.getCaptcha());
break;
}
}
}
}
protected abstract void verify(String captchaId, String captcha);
public void enable() {
enable = true;
}
public void disable() {
enable = false;
}
}