mirror of
https://gitee.com/y_project/RuoYi-Cloud.git
synced 2026-01-28 12:41:55 +08:00
Pre Merge pull request !421 from AhYi/master
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.common.core.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* @Description “关闭” 数据脱敏
|
||||
* @Author AhYi
|
||||
* @Date 2025-07-07 10:23
|
||||
*/
|
||||
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface NoSensitive {
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.ruoyi.common.core.aspect;
|
||||
|
||||
import com.ruoyi.common.core.annotation.NoSensitive;
|
||||
import com.ruoyi.common.core.context.SensitiveContextHolder;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Description @NoSensitive 注解切面,主要用户对方法的注解
|
||||
* @Author AhYi
|
||||
* @Date 2025-07-07 10:31
|
||||
*/
|
||||
|
||||
@Aspect
|
||||
@Component
|
||||
public class NoSensitiveAspect {
|
||||
|
||||
@Around("@annotation(noSensitive)")
|
||||
public Object around(ProceedingJoinPoint joinPoint, NoSensitive noSensitive) throws Throwable {
|
||||
try {
|
||||
SensitiveContextHolder.enterNoSensitiveScope();
|
||||
return joinPoint.proceed();
|
||||
} finally {
|
||||
SensitiveContextHolder.exitNoSensitiveScope();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.ruoyi.common.core.context;
|
||||
|
||||
/**
|
||||
* @Description Sensitive 数据脱敏上下文管理,存储当前线程是否需要脱敏
|
||||
* @Author AhYi
|
||||
* @Date 2025-07-07 10:27
|
||||
*/
|
||||
|
||||
|
||||
public class SensitiveContextHolder {
|
||||
private static final ThreadLocal<Integer> COUNTER = new ThreadLocal<>();
|
||||
|
||||
public static void enterNoSensitiveScope() {
|
||||
Integer count = COUNTER.get();
|
||||
if (count == null) {
|
||||
count = 0;
|
||||
}
|
||||
COUNTER.set(count + 1);
|
||||
}
|
||||
|
||||
public static void exitNoSensitiveScope() {
|
||||
Integer count = COUNTER.get();
|
||||
if (count != null) {
|
||||
if (count <= 1) {
|
||||
COUNTER.remove();
|
||||
} else {
|
||||
COUNTER.set(count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isNoSensitiveScope() {
|
||||
Integer count = COUNTER.get();
|
||||
return count != null && count > 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user