当前位置: 首页 > news >正文

玻璃行业做的非常有设计感的网站怎么给搞笑网站做文案

玻璃行业做的非常有设计感的网站,怎么给搞笑网站做文案,企业如何进行网络营销,知名的深圳小程序开发公司需求 有个简单的需求#xff0c;对于第三方接口我们需要做个简单的鉴权机制#xff0c;这边使用的是非对称性加密的机制。我们提供三方公钥#xff0c;他们通过公钥对接口json报文使用加密后的报文请求#xff0c;我们通过对接收过来的请求某一个加密报文字段来进行RSA解密… 需求 有个简单的需求对于第三方接口我们需要做个简单的鉴权机制这边使用的是非对称性加密的机制。我们提供三方公钥他们通过公钥对接口json报文使用加密后的报文请求我们通过对接收过来的请求某一个加密报文字段来进行RSA解密校验 考虑到日后方便其他接口使用我这边使用了拦截自定义注解RequestBodyAdvice机制来处理。话不多说来实操一把 定义自定义注解类 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface AuthenticationThird{} RAS工具类 pom文件引入依赖 dependencygroupIdcom.github.shalousun/groupIdartifactIdcommon-util/artifactIdversion1.9.2/version/dependency import com.power.common.util.RSAUtil;import java.util.Map;public class RSATool {/*** 随机生成一对公私钥*/public static MapString, String generatorRsaPariKey() {return RSAUtil.createKeys(1024);}/*** 通过公钥来加密获取对应base64字符串** param sourceData* param publicKey* return*/public static String encryptStr(String sourceData, String publicKey) {return RSAUtil.encryptString(sourceData, publicKey);}/*** 通过RAS 公钥加密的字符串 使用私钥来解密** param encryptStr* param privateKey* return*/public static String decryptStr(String encryptStr, String privateKey) {return RSAUtil.decryptString(encryptStr, privateKey);}}私钥配置类 Configuration Data public class ThridApiInfoConfig {Value(${api.auth.privateKey})public String authenticationThirdPrivateKey; } 第三方请求加密后封装报文类 Data public class BaseEncryptReq {private String encryptBoyStr;private String reqSource;} 自定义异常类 Setter Getter public class NoPassException extends RuntimeException {private String message;public NoPassException(String message) {this.message message;}}RequestBodyAdvice这里类能干什么 对RequestBody进行增强处理比如所有请求的数据都加密之后放在 body 中在到达 controller 的方法之前需要先进行解密那么就可以通过 RequestBodyAdvice 来进行统一的解密处理无需在 controller 方法中去做这些通用的操作。 自定义的类需要实现 RequestBodyAdvice 接口但是这个接口有个默认的实现类 RequestBodyAdviceAdapter相当于一个适配器方法体都是空的所以我们自定义的类可以直接继承这个类更方便一些 继承RequestBodyAdviceAdapter类 Slf4j ControllerAdvice public class DecryptRequestBodyAdvice extends RequestBodyAdviceAdapter {Autowiredprivate ThridApiInfoConfig thridApiInfoConfig;Overridepublic boolean supports(MethodParameter methodParameter, Type targetType, Class? extends HttpMessageConverter? converterType) {return methodParameter.getMethod().isAnnotationPresent(AuthenticationThird.class);}Overridepublic HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class? extends HttpMessageConverter? converterType) {String encoding UTF-8;InputStream inputStream null;try {//step1 获取http请求中原始的bodyString body IOUtils.toString(inputMessage.getBody(), encoding);//step2 将对应字符串转为beanBaseEncryptReq baseEncryptReq JSON.parseObject(body, BaseEncryptReq.class);if (!StringUtil.isNotBlank(baseEncryptReq.getEncryptBoyStr())) {throw new NoPassException(接口加密报文不能为空);}if (!StringUtil.isNotBlank(baseEncryptReq.getReqSource())) {throw new NoPassException(接口请求来源参数不能为空);}//todo 判断来源if (StringUtil.isNotBlank(baseEncryptReq.getReqSource()) !xxx.equals(baseEncryptReq.getReqSource())) {throw new NoPassException(接口请求来源参数不合法);}//step3 解密baseEncryptReq.encryptBoyStr属性进行RSATool解密String decryptBody RSATool.decryptStr(baseEncryptReq.getEncryptBoyStr(), thridApiInfoConfig.getAuthenticationThirdPrivateKey());//step 4 将解密之后的body数据重新封装为HttpInputMessage作为当前方法的返回值inputStream IOUtils.toInputStream(decryptBody, encoding);} catch (NoPassException ex) {log.error(DecryptRequestBodyAdvice 处理解密异常);throw new NoPassException(ex.getMessage());} catch (Exception ex) {log.error(DecryptRequestBodyAdvice 处理解密异常);throw new NoPassException(接口解密异常);}InputStream finalInputStream inputStream;return new HttpInputMessage() {Overridepublic InputStream getBody() throws IOException {return finalInputStream;}Overridepublic HttpHeaders getHeaders() {return inputMessage.getHeaders();}};}} 定义测试controller类 Slf4j RestController RequestMapping(/testController) public class TestController {AuthenticationThirdPostMapping(value/testAuth)public ResultDto testAuth(RequestBody String param){log.info(解密后的报文:{},param);return ResultDto.builder().success(true).message(测试鉴权).build();} } 定义全局异常处理类 Slf4j ControllerAdvice public class GlobalExceptionHandler {/*** 处理 NoPassException 异常** param e* return*/ExceptionHandler(NoPassException.class)ResponseBodypublic ResultDto handleNoPassException(NoPassException e) {log.error(自定义NoPassException异常:{},{}, e.getMessage(), e);return ResultDto.builder().success(false).message(e.getMessage()).build();} 接口响应实体类 Data public class ResultDto {private Boolean success;private String message; }测试效果 我们先用之前的RSATool工具类对报文通过公钥来加密 控制台输出 修改下加密报文 至此就完成了一个简单通用的接口鉴权
http://www.yingshimen.cn/news/76609/

相关文章:

  • 建设部网人事考试网站宁波网站建设公司制作网站
  • 成都世迅网站建设美图在线图片编辑器
  • 网站的常用技术有哪些凡科网站制作
  • 网站推广流程是鞍山企业网站建设
  • 新乡做网站哪家好网站子目录怎么做
  • 100m的光纤可以做网站吗wordpress获取缩略图地址
  • 网络营销是不是网络推广合肥网站优化seo
  • 免费建站的软件做网站域名怎么选有利于seo
  • 网站开发主要有两个阶段广东省农业农村厅电话
  • 推销网站话术网站开发的实验报告
  • 网站开发人员岗位在深圳市住房和建设局网站
  • 怎么建立网站?在线制作图片加文字免费软件
  • 天目西路网站建设渭南房产网站制作
  • 顺义便宜的建站公司做3d人物模型素材下载网站
  • 安福网站建设搭建网站的平台有哪些
  • 绿植行业做网站的wordpress华丽插件
  • 如何建设下载网站淘宝联盟的网站怎么做
  • 做网站的具体需求网站安全建设需求
  • phpmyadmin做网站wordpress 外贸多语言
  • 对电子商务网站建设与管理的理解医疗网站建设讯息
  • 网站建设投票系统设计企业网站建设搜集资料
  • 网站备案ip查询网站查询西安住房城市建设局官网
  • 什么网站容易做百度权重上海进一步优化
  • 做我女朋友程序网站上海公共服务平台官网
  • 海南网站建设多少钱帮忙做网站
  • 建设大型网站设计公司品牌营销的四大策略
  • 国家工信部网站备案中文搭建式软件开发工具
  • 做网站之前需要准备什么软件湖州市住房和城乡建设局官方网站
  • 免费自助建站快速自助建站西宁做网站多少钱
  • 新网网站内部优化网络营销论文选题