基于springboot 实现Controller进行的调用的返回数据的全局加密的实现

首先需要配置在试图解析器加上加密的工具类:

 @Configuration
class ----

 @Resource
    MessageConverter messageConverter;


    @Override
    public void configureMessageConverters(List> converters) {
        converters.add(messageConverter);
    }

其次实现一个消息转换器的重写的类:


/**
 * 统一地,对返回消息进行加密
 * @package: com.i2f.training.common.converter
 * @author: 
 * @date: 2020/3/6 12:39
 */
@Component
public class MessageConverter extends MappingJackson2HttpMessageConverter {

    @Override
    /** Spring在返回JSON数据时通过此方法将Object转为JSON字符串并写出到Response中,针对于@ResponseBody注解生效 */
    protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
        ObjectMapper objectMapper = new ObjectMapper();
        ResultMessage resultMessage = null;
        //todo 用spring带的工具类,比较返给前端的数据类型是否为ResultMessage
        if (TypeUtils.isAssignable(type, ResultMessage.class)) {
            resultMessage = (ResultMessage) object;
            String s = objectMapper.writer().writeValueAsString(resultMessage.getData());
            resultMessage.setData(CryptoUtils.encrypt(s));
        } else {
            object = new ResultMessage<>("666666","系统返回数据格式异常",null);
            logger.error("小老弟,后端返给前端的数据类型应该为ResultMessage类型!!!");
        }
        super.writeInternal(object, type, outputMessage);
    }
}

下一篇文章讲解具体的底层原理和实现的普遍用法:

---------------------end0-----------------------

你可能感兴趣的:(基于springboot 实现Controller进行的调用的返回数据的全局加密的实现)