update 优化 数据脱敏pr 使用接口提高扩展性

This commit is contained in:
疯狂的狮子li
2021-12-28 11:51:01 +08:00
parent c4cfaab621
commit 51b19fcff4
5 changed files with 89 additions and 79 deletions

View File

@ -0,0 +1,18 @@
package com.ruoyi.common.core.service;
/**
* 脱敏服务
* 默认管理员不过滤
* 需自行根据业务重写实现
*
* @author Lion Li
* @version 3.6.0
*/
public interface SensitiveService {
/**
* 是否脱敏
*/
boolean isSensitive();
}

View File

@ -7,8 +7,9 @@ import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.core.service.SensitiveService;
import com.ruoyi.common.enums.SensitiveStrategy;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import java.io.IOException;
import java.util.Objects;
@ -23,7 +24,8 @@ public class SensitiveJsonSerializer extends JsonSerializer<String> implements C
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (SecurityUtils.isAdmin(SecurityUtils.getLoginUser().getUserId()) || SecurityUtils.getLoginUser().getMenuPermissions().contains("Sensitive")){
SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class);
if (sensitiveService.isSensitive()){
gen.writeString(value);
} else {
gen.writeString(strategy.desensitizer().apply(value));