|
|
@ -26,12 +26,14 @@ import java.util.Objects;
|
|
|
|
public class SensitiveHandler extends JsonSerializer<String> implements ContextualSerializer {
|
|
|
|
public class SensitiveHandler extends JsonSerializer<String> implements ContextualSerializer {
|
|
|
|
|
|
|
|
|
|
|
|
private SensitiveStrategy strategy;
|
|
|
|
private SensitiveStrategy strategy;
|
|
|
|
|
|
|
|
private String roleKey;
|
|
|
|
|
|
|
|
private String perms;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
|
|
|
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class);
|
|
|
|
SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class);
|
|
|
|
if (ObjectUtil.isNotNull(sensitiveService) && sensitiveService.isSensitive()) {
|
|
|
|
if (ObjectUtil.isNotNull(sensitiveService) && sensitiveService.isSensitive(roleKey, perms)) {
|
|
|
|
gen.writeString(strategy.desensitizer().apply(value));
|
|
|
|
gen.writeString(strategy.desensitizer().apply(value));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
gen.writeString(value);
|
|
|
|
gen.writeString(value);
|
|
|
@ -47,6 +49,8 @@ public class SensitiveHandler extends JsonSerializer<String> implements Contextu
|
|
|
|
Sensitive annotation = property.getAnnotation(Sensitive.class);
|
|
|
|
Sensitive annotation = property.getAnnotation(Sensitive.class);
|
|
|
|
if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) {
|
|
|
|
if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) {
|
|
|
|
this.strategy = annotation.strategy();
|
|
|
|
this.strategy = annotation.strategy();
|
|
|
|
|
|
|
|
this.roleKey = annotation.roleKey();
|
|
|
|
|
|
|
|
this.perms = annotation.perms();
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return prov.findValueSerializer(property.getType(), property);
|
|
|
|
return prov.findValueSerializer(property.getType(), property);
|
|
|
|