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

班级网站设计论文网站制作与网站建设技术

班级网站设计论文,网站制作与网站建设技术,镇海区住房和建设网站,宿迁做网站电话api平台接口调用,需要通过签名去核对是不是有效的用户,,一般会给两个key,acceeKey 和 secretKey,第一个相当于用户名,第二个相当于密钥,,,前端通过一定的算法,&#xff0…

api平台接口调用,需要通过签名去核对是不是有效的用户,,一般会给两个key,acceeKeysecretKey,第一个相当于用户名,第二个相当于密钥,,,前端通过一定的算法,,将内容和密钥 生成一个签名,,,
后端再根据 内容和密码,生成一个签名,,, 比对这两个签名是否一致,如果一致就是正常用户

这样也不安全,,别人可能会重发你的请求,,盗用你的签名一直刷你的请求,,,
设置一个nonce:唯一字符串,,请求一次记录一次,保证不重复,,但是只设置一个nonce服务器压力会很大,,设置一个timestamp 来筛选掉前后五分钟的请求,


package com.cj.apiclient;import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import com.cj.apiclient.model.User;import java.util.HashMap;
import java.util.Map;
import java.util.UUID;/*** @author cc* @date 2025-04-04 21:05**/public class ApiClient {private String baseUrl = "http://localhost:8080";private String accessKey;private String secretKey;public ApiClient(String accessKey, String secretKey) {this.accessKey = accessKey;this.secretKey = secretKey;}public String getUsernameByGet(User user){String json = JSONUtil.toJsonStr(user);HttpResponse httpResponse = HttpRequest.get(baseUrl + "/user/get").addHeaders(getHeaderMap(json)).execute();String body = httpResponse.body();return body;}private Map<String, String> getHeaderMap(String body) {Map<String, String> map = new HashMap<>();map.put("accessKey", accessKey);map.put("nonce", UUID.randomUUID().toString());map.put("timestamp", System.currentTimeMillis() + "");map.put("body",body);map.put("sign",StringUtils.genSign(body,secretKey));return map;}
}
public class StringUtils {public static String genSign(String body,String secretKey){Digester md5 = new Digester(DigestAlgorithm.MD5);String content = body+"."+secretKey;return md5.digestHex(content);}
}
  @GetMapping("/user/get")public String getUsernameByGet(User user, HttpServletRequest request){String accessKey = request.getHeader("accessKey");String body = request.getHeader("body");// 判断时间戳是否在前后五分钟之内String timestamp = request.getHeader("timestamp");// 判断随机数是否使用过,,可以使用redis的ttlString nonce = request.getHeader("nonce");String sign = request.getHeader("sign");String s = StringUtils.genSign(body, "123");if (!s.equals(sign)){throw new RuntimeException("签名错误");}return "hehe";}
springboot自定义starter

自动配置的包,加了之后写配置文件,有自动提示

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

自定义starter,相当于配置了一个带默认属性的bean,,在META-INF文件夹下面添加spring.factories文件,将配置类写进去:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.cj.apiclient.ApiClientConfig

遇到的问题,默认属性写在appilication.properites不生效,,写在application.yml中生效

http://www.dtcms.com/a/593864.html

相关文章:

  • 卓拙科技做网站吗网站建设期末论文
  • 【App开发】Android Studio 安装插件(比如通义灵码)
  • 在线生成个人网站注册建设通网站首页
  • 栖霞建设采购网站用wordpress插件推荐
  • 网站开发前后端语言2017主流网站开发语言
  • 数仓开发中口径发散如何治理?
  • SEO网站建设入驻程流网页游戏排行2020前十名
  • EasyGBS/EasyNVR高并发适配!PostgreSQL部署指南
  • 网站开发公司怎么选择动态交互网站建设
  • 杭州网站的建设企业管理软件的发展趋势
  • git如何回退到指定提交
  • 自己做网站用中文为什么是乱码大型网站开发 优帮云
  • 六爻观测基础(四)——地支
  • 抖音官网链接网站怎么做缪斯设计公司
  • Uniapp ECG心电图组件
  • 高性能抗干扰两线电流型霍尔开关SC25898 | 赛卓电子重磅新品
  • 仁怀哪里有做网站的做效果图常用的网站有哪些
  • 2025 11 09 作业
  • 廊坊网站seo服务深圳市光明区官网
  • 大模型调用完全指南(含免费资源汇总)
  • 定义数组指针
  • 做搜狗手机网站点网站第三方统计工具
  • 专业钓场计时计费管理系统:提升运营效率的智能化解决方案
  • 如何做一个与博物馆相关网站卡板技术支持 东莞网站建设
  • 北大软件外事管理系统:以“制度+技术”,筑牢外事管理 数字化屏障
  • wordpress怎么连接主机名aso如何优化
  • PDF文件内容出现重叠现象解析
  • 织梦系统怎么做网站个人网站备案信息填写
  • 基于AutoDL远端服务复现具身智能论文OpenVLA
  • 新能源汽车减速器行星齿轮机构资料整理