外部接口 -- 密文校验与数据传输
来源:互联网 发布:阿里云带宽费用 编辑:程序博客网 时间:2024/06/05 10:15
1. 对于第三方引用我们的接口,按照一切不信任原则,我们都要进行加密校验。
2.考虑到密文验证的通用性,将此方法从controller剥离出来,放到拦截器实现。
step1 : 注册拦截器
<mvc:interceptors> <!-- 外部接口拦截器 --> <mvc:interceptor> <mvc:mapping path="/junjin/api/outSideInterface.do" /><!-- 如果不配置或/*,将拦截所有的Controller --> <bean class="com.junjin.interceptor.OutSideInterfaceInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
step2 : 继承HandlerInterceptor
<span style="font-size:12px;"><span style="font-family:SimSun;font-size:10px;">//在实际的handler被执行前被调用</span>public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 读取配置文件中的密钥 ConstPropertiesReader propertiesReader = ConstPropertiesReader.getInstance(); String key = propertiesReader.get("key").toString(); // 获得客户端密文(token是第三方放在url后面的请求数据) String token = request.getParameter("token"); // request获取post请求的数据 : String postContent = RequestUtil.getJSONStringAsciiCode(request); // 对传送的数据进行加密 String tokenCheck = TokenUtil.generateToken(key, postContent); logger.info(tokenCheck); if (tokenCheck.equals(token)) { //将数据返回到controller层面 <span style="color:#FF0000;">request.setAttribute("postContent", postContent);</span> return true; } else { FjsCallBackObject obj = new FjsCallBackObject(); obj.setStatus(1); obj.setMsg("密文不匹配,请重新提交"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type", "text/plain;charset=UTF-8"); response.getWriter().write(FastJsonUtil.toJSONString(obj)); return false; }}</span>
step2_1 : 从request中读取post请求的数据
<span style="font-size:12px;"><span style="color:#FF0000;">import org.apache.commons.io.IOUtils;</span>public static String CHARSET = "UTF-8";public static Stirng getJsonStringAsciiCode(HttpServletRequest request){ String json = ""; try{ ServletInputStream in = request.getInputStream(); String content = <span style="color:#FF0000;">IOUtils</span>.toString(in,CHARSET); json = URLDecoder.decode(content,CHARSET); }catch(IOException e){ e.printStackTrace(); } return json;} </span>
0 0
- 外部接口 -- 密文校验与数据传输
- 调用与外部接口
- JSON 数据传输 与调用远程接口
- JSON 数据传输 与调用远程接口
- 不知不觉,json数据传输与接口调用
- go 接口静态与动态校验
- 8051单片机数据传输接口扩展技术与应用实例
- 【Android数据加密与完整性校验之使用MessageDigest类进行MD5/SHA1】校验数据传输的完整性常用方式
- TMS320F2812外部接口分析与存储器扩展
- 使用HttpClient与外部接口通信
- SAP与外部WebService接口的链接
- 加密数据传输接口
- 外部引用校验JS
- java中外部接口与内部接口的使用
- 网络数据传输的三种校验方法
- 网络数据传输的三种校验方法
- jmeter 实现DB数据与接口数据的匹配校验
- HTTP+XML方式接口数据传输
- 【探索】在 JavaScript 中使用 C 程序
- 乱七八糟却非常重要的一些东西
- 取模运算与hash function
- Brown Clustering算法和代码学习
- LA 4329
- 外部接口 -- 密文校验与数据传输
- Windows下Android+NDK开发环境搭建(JDK[8u45]+Eclipse+Android SDK[r24.1.2]+ADT+NDK[r10d])
- HMM学习笔记_1(从一个实例中学习DTW算法)
- CString和CByteArray的相互转化
- Numpy攻略系列:高级索引机制
- iOS开发中,点击放大、缩小图片方法举例
- POJ 1094(拓扑排序)
- 78.Bulls and Cows
- 安装RPM包或源码包