需求:为提高接口的安全性,对数据传输加密。
前提:Controller层使用@RequestBody接收入参,@ResponseBody出参

入参解密

package com.sep6th.base.core.advice;import java.lang.reflect.Type;import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter;import com.sep6th.common.constant.BaseConstant;
import com.sep6th.common.util.AESUtil;/** * 对加密的请求参数,解密** @date 2018/10/10 11:35*/
@ControllerAdvice
public class RequestBodyDecryptAdvice extends RequestBodyAdviceAdapter  {/*** 前置拦截匹配操作(定义自己业务相关的拦截匹配规则)* 满足为true的才会执行下面的方法* * @date 2018/10/10 11:43*/@Overridepublic boolean supports(MethodParameter methodParameter, Type targetType,Class<? extends HttpMessageConverter<?>> converterType) {return StringHttpMessageConverter.class.isAssignableFrom(converterType);}/*** 对加密的请求参数,解密* * @date 2018/10/10 12:55*/@Overridepublic Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType,Class<? extends HttpMessageConverter<?>> converterType) {//对加密的请求参数,解密String jsonStrDecrypt = AESUtil.AES_Decrypt(BaseConstant.AES_KEY, String.valueOf(body));System.out.println("对加密的请求参数,解密:"+ jsonStrDecrypt);return jsonStrDecrypt;}
}

出参加密

package com.sep6th.base.core.advice;import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;import com.sep6th.common.constant.BaseConstant;
import com.sep6th.common.util.AESUtil;
import com.sep6th.common.util.JsonUtils;
import com.sep6th.common.util.SysResult;
/** * 对Controller层方法,返回类型是SysResult的返回数据加密* 注意:定义自己业务相关的拦截匹配规则。*      直接return true;是对所有返回数据加密。* * @date 2018/10/10 10:30*/
@ControllerAdvice
public class ResponseBodyEncryptAdvice implements ResponseBodyAdvice<Object> {/*** 前置拦截匹配操作(定义自己业务相关的拦截匹配规则)* true:就执行下面的beforeBodyWrite方法。* * @date 2018/10/10 11:27*/@Overridepublic boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> converterType) {// 拦截Controller层返回类型是SysResult的方法return methodParameter.getMethod().getReturnType().isAssignableFrom(SysResult.class);}/*** 对返回值进行加密* * @date 2018/10/10 11:18*/@Overridepublic Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType selectedContentType,Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,ServerHttpResponse response) {String jsonStr = JsonUtils.toFastJson(body);System.out.println("获取ResponseBody里的内容:"+ jsonStr);String jsonStrEncrypt = AESUtil.AES_Encrypt(BaseConstant.AES_KEY, jsonStr);System.out.println("返回数据加密:"+ jsonStrEncrypt);String jsonStrDecrypt = AESUtil.AES_Decrypt(BaseConstant.AES_KEY, jsonStrEncrypt);System.out.println("对返回的加密数据解密:"+ jsonStrDecrypt);return jsonStrEncrypt; }
}

【笔记】Spring MVC拦截入参、出参实现入参解密,出参加密统一管理相关推荐

  1. 使用session监听+spring MVC拦截器禁止用户重复登录

    在许多web项目中,需要禁止用户重复登录.一般来说有两种做法: 一是在用户表中维护一个字段isOnLine(是否在线),用户登录时,设定值为true,用户退出时设定为false,在重复登录时,检索到该 ...

  2. Spring MVC拦截器~~~登陆验证拦截

    [ 30 分 钟 轻 松 入 门 Spring MVC][web 三 大 组 件 之 ~ ~ Filter 过 滤 器] Interceptor 拦截器学习: 1.了解spring mvc拦截器的概念 ...

  3. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

  4. spring mvc拦截器_Spring MVC拦截器示例

    spring mvc拦截器 我认为现在是时候看看Spring的MVC拦截器机制了,这种机制已经存在了很多年,并且是一个非常有用的工具. Spring Interceptor会按照提示说:在传入的HTT ...

  5. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  6. spring mvc 拦截器拦截jsp页面

    spring mvc 拦截器怎么拦截jsp页面 你这个 是拦截带 /jsp 的 .do请求 解决方案 用spring 的拦截器 去拦截 所有的 .do 请求, 然后写一个 过滤器去拦截 所有的.jsp ...

  7. Spring MVC拦截器实现用户登录权限验证案例

    本节将通过拦截器来完成一个用户登录权限验证的 Web 应用 springMVCDemo07,具体要求如下:只有成功登录的用户才能访问系统的主页面main.jsp,如果没有成功登录而直接访问主页面,则拦 ...

  8. Spring MVC拦截器

    1.如何实现登录权限检查 使用session进行约定值的检查 实现方法: (1)使用Filter (2)使用Spring的拦截器 拦截器组件简介:Spring MVC特有组件,可以在调用Control ...

  9. Spring MVC 拦截器 interceptor 详解

    Spring MVC-拦截器 今天就是把有关拦截器的知识做一个总结. 1.拦截器概述 1.1 什么是拦截器? Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(F ...

  10. Spring MVC拦截器示例

    我以为是时候看看Spring的MVC拦截器机制了,这种机制已经存在了很多年,并且是一个非常有用的工具. Spring Interceptor会按照提示进行操作:在传入的HTTP请求到达您的Spring ...

最新文章

  1. sql移除数据中的换行符和回车符
  2. MindSpore模型精度调优实践
  3. Juju-Gui 安装笔记
  4. 也来谈谈RNN的梯度消失/爆炸问题
  5. 第六章 Windows应用程序对键盘与鼠标的响应
  6. 批量删除满足指定条件的 SAP CRM One Order 订单
  7. LeetCode 2062. 统计字符串中的元音子字符串
  8. 计算机的数学发展史论文,数学简史论文范文
  9. 南华大学计算机专业导师排名,南华大学研究生导师介绍:左国平-中公研招网...
  10. 【论文写作】JSP在线考试系统如何写功能描述
  11. busybox inittab
  12. Zabbix(简介和ubuntu安装步骤)
  13. 网络_远程开机(ubuntu)
  14. “暗云Ⅲ”实为老病毒 360去年已查杀
  15. Adafruit GFX Library字体规范
  16. Mysql索引:图文并茂,深入探究索引的原理和使用
  17. capture h5中_input type=file属性详解,利用capture调用手机摄像头
  18. selenium缩放浏览器
  19. 世界环境保护日的志愿者
  20. websocket实践与浅入浅出

热门文章

  1. JAVA 上传图片时 压缩后上传
  2. 你的计算机 dota2服务器,(仅负责处理)盲目追求高性能计算机配置的朋友,您确实使用... [dota2 bar]...
  3. 一起分析Linux系统设计思想——05字符设备驱动框架剖析(四)
  4. zabbix配置redis监控
  5. 汽车电子中的 NCV4269CPD50R2G LDO低压差稳压器 适用于汽车车身和底盘,仪表板,导航系统
  6. Geant4 及ROOT 在windows子系统(WSL)中的快速安装
  7. LPCWSTR与string相互转换
  8. 几句话讲清,TCP为啥要进行三次握手和四次分手
  9. 关于程序员的搞笑段子,内涵满满的!请允许我先笑5分钟
  10. baby与小伙伴玩游戏画面被曝光 240万人在线观战