如果项目需要对一些特殊、敏感的数据进行脱敏处理。根据实际的需求可以考虑在读写的过程中分别做脱敏操作。
一、写过程参数脱敏
主要是使用mybatis框架提供的Interceptor实现。需要考虑不同类型的参数解析处理方式不同。
@Slf4j
@AllArgsConstructor
@Intercepts ( {
@Signature ( type = ParameterHandler . class , method = "setParameters" , args = PreparedStatement . class ) } )
public class ParameterDesensitizationInterceptor extends ParameterInterceptor implements Interceptor {
private final DesensitizationProperties desensitizationProperties;
@Override
public Object intercept ( Invocation invocation) throws Throwable {
return handleInvocation ( invocation) ;
}
@Override
public Map < String , List < String > > getObjectFieldsMap ( ) {
return desensitizationProperties. getObjectFieldsMap ( ) ;
}
@Override
public Object handleObjectField ( Object objectFieldValue) {
return StringUtils . mask ( String . valueOf ( objectFieldValue) , desensitizationProperties. getStartPosition ( ) ,
desensitizationProperties. getEndPosition ( )