直接上代码,作为记录。
CheckSignAspect.java
@Aspect //定义一个切面
@Configuration
@Log4j2
public class CheckSignAspect {
// 定义切点Pointcut
@Pointcut("execution(* com.lsj.xxl.controller.*.*CheckSign(..))")
public void excudeService() {
}
@Around("excudeService()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
String class_name = pjp.getTarget().getClass().getName();
String method_name = pjp.getSignature().getName();
String[] paramNames = getFieldsName(class_name, method_name);
Object[] method_args = pjp.getArgs();
SortedMap<String, String> map = logParam(paramNames, method_args);
if (map != null) {
String sign = map.get("sign").toUpperCase();
map.remove("sign");
String realSign = SignUtil.createSign("utf8", map);
if (!realSign.equals(sign)) {
return "签名校验错误";
}
}
Object result = pjp.proceed();