通过集成FastJsonHttpMessageConverter将返回报文统一加密处理

该博客介绍了如何在Spring MVC中通过自定义FastJsonHttpMessageConverter实现返回报文的统一加密处理,避免在每个Controller中分别加密的繁琐操作。博主详细讲解了引入FastJson依赖、创建自定义转换类以及配置WebMvcConfigurerAdapter的步骤,并在转换类中演示了加密方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编写接口中,为了安全起见,会将报文进行加密处理,如果每个返回报文都在controller处进行加密,当加密方式发生变化或多渠道接入返回不同密文时,改动较为繁琐,通过集成FastJsonHttpMessageConverter将返回报文可统一加密处理。

 

 引入fastjson工具包

        <!-- fastjson json工具 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3</version>
        </dependency>
自定义解析类,主要用于对返回的json串进行处理
MyFastJsonHttpMessageConverter
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.HttpMessageNotWritableException;

import java.io.IOException;

/**
 *
 * 自定义解析类,用于对返回的json串进行处理,
 * 加密
 *
 * @author javiner
 * @date 2021/6/21 14:54.
 */

public class MyFastJsonHttpMessageConverter extends FastJsonHttpMessageConverter {
    @Override
    protected void writeInternal(Object obj, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
        String json = JSONObject.toJSONString(obj);
        json += "我加密了哦";
        outputMessage.getBody().write(json.getBytes());
        //super.writeInternal(obj, outputMessage);
    }
}

编写MyWebMvcConfigurerAdpter

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author javiner
 * @date 2021/6/21 14:43.
 */
@Configuration
@EnableWebMvc
public class MyWebMvcConfigurerAdpter extends WebMvcConfigurerAdapter {

    /***
     * 设置跨域访问
     * @author pjw
     * @date 2018/9/28 12:24
     * param: [registry]
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
        super.addCorsMappings(registry);
    }

    /**
     * 配置fastJson
     *
     * @param converters
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MyFastJsonHttpMessageConverter fastConverter = new MyFastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);


        converters.add(fastConverter);
        super.configureMessageConverters(converters);
    }
}

在MyFastJsonHttpMessageConverter类中进行json加密处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值