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

第三方系统集成若依权限校验

假设系统A是由若依管理系统进行的二次开发,保留了若依的用户、权限、角色管理功能,第三方系统B想要调我们的系统A的接口,就得先集成我们的SDK,这样就可以通过我们系统A的权限、角色校验,从而完成接口调用

一 开发若依SDK工具包

新建一个springboot项目(4.x版本),去掉启动类

pom.xml如下

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ultrahd</groupId><artifactId>ultrahdCommonUtils</artifactId><version>0.0.1-SNAPSHOT</version><name>ultrahdCommonUtils</name><description>ultrahdCommonUtils</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>4.0.3</version></dependency><!-- OkHttp 依赖 --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency><!-- JSON 依赖 --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20231013</version></dependency></dependencies><build></build></project>

新建sdk工具类GetTokenService

packagecom.ultrahd.ultrahdcommonutils.service;importokhttp3.MediaType;importokhttp3.OkHttpClient;importokhttp3.Request;importokhttp3.RequestBody;importokhttp3.Response;importorg.json.JSONException;importorg.json.JSONObject;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Service;importjava.io.IOException;/** * 获取token串 */@ServicepublicclassGetTokenService{@Value("${app.url}")privateStringbaseUrl;@Value("${app.username}")privateStringusername;@Value("${app.password}")privateStringpassword;privateStringtoken;publicStringgetToken(){OkHttpClientclient=newOkHttpClient();MediaTypemediaType=MediaType.parse("application/json");RequestBodybody=RequestBody.create(mediaType,"{\"username\":\""+username+"\",\"password\":\""+password+"\",\"code\":\"\",\"uuid\":\"\"}");Requestrequest=newRequest.Builder().url(baseUrl+"/login").post(body).addHeader("Content-Type","application/json").build();try{System.out.println("发送登录请求到:"+baseUrl+"/login");System.out.println("请求体:{\"username\":\""+username+"\",\"password\":\"[已隐藏]\",\"code\":\"\",\"uuid\":\"\"}");Responseresponse=client.newCall(request).execute();StringresponseBody=response.body().string();System.out.println("响应状态码:"+response.code());System.out.println("响应内容:"+responseBody);if(response.isSuccessful()){try{JSONObjectjson=newJSONObject(responseBody);if(json.has("token")){token=json.getString("token");System.out.println("登录成功,获取到token:"+token);}else{System.out.println("登录成功,但响应中没有token字段");}}catch(JSONExceptione){System.out.println("JSON解析异常:"+e.getMessage());}}else{System.out.println("登录失败:"+responseBody);}}catch(IOExceptione){System.out.println("请求异常:"+e.getMessage());}returntoken;}}

新建配置类UltrahdCommonUtilsAutoConfiguration

packagecom.ultrahd.ultrahdcommonutils.config;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;@Configuration@ComponentScan(basePackages="com.ultrahd.ultrahdcommonutils")// 指定要扫描的包publicclassUltrahdCommonUtilsAutoConfiguration{}

在applicatio.yml里配置如下

app:url:http://localhost:8080# 系统A的部署地址username:admin123# 系统A的用户名(可以先随便写,不写真实用户名密码也没事,但是必须有这个配置项)password:admin12345# 系统A的密码

在resource目录下新建META-INF.spring文件夹,在该文件夹下新建org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,内容如下

com.ultrahd.ultrahdcommonutils.config.UltrahdCommonUtilsAutoConfiguration

打包为一个sdk工具包:

将打好的sdk的jar包发给第三方系统

二 第三方系统B集成SDK

系统B收到系统A的sdk工具包后,通过maven命令上传到maven仓库

# 注意修改Dfile后边jar包所在的路径mvn install:install-file-Dfile=E:\jar\ultrahdCommonUtils-0.0.1-SNAPSHOT.jar-DgroupId=com.ultrahd-DartifactId=ultrahdCommonUtils-Dversion=0.0.1-SNAPSHOT-Dpackaging=jar

可以在仓库看到刚上传的包

引入SDK依赖

<dependency><groupId>com.ultrahd</groupId><artifactId>ultrahdCommonUtils</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

在application.yml里配置系统A提供的真实的url地址、用户名、密码

# url、username、password必须真实app:url:http://192.168.11.129:8089username:testpassword:test54321

注入GetTokenService后,调用getToken获取token串

packagecom.exam.testgettoken.controller;importcom.ultrahd.ultrahdcommonutils.service.GetTokenService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;@RestController@RequestMapping("/test")publicclassGetTokenController{@AutowiredprivateGetTokenServicegetToken;@GetMapping("/getToken")publicvoidlist(){Stringtoken=getToken.getToken();System.out.println("token值:"+token);}}

带着这个token作为请求头,去请求系统A里的接口即可

Requestrequest=newRequest.Builder().url(BASE_URL+apiPath).get().addHeader("Authorization","Bearer "+token)//注意,在这里加请求头.build();Responseresponse=client.newCall(request).execute();System.out.println("接口响应:"+response.body().string());
http://www.jsqmd.com/news/582093/

相关文章:

  • 【Python实战】搭建AI数字人对话系统:从语音识别到虚拟形象的全流程实现
  • 【数据要素+数据资产合集】100余份数据要素+数据资产方案资料合集(PPT+WORD)
  • MJh代码混淆实战指南:使用Obfuscar构建坚不可摧的安全防线
  • 基于Matlab的轴承-空心转轴-飞轮不同耦合类型动力学分析
  • N_m3u8DL-RE:跨平台流媒体解决方案的全方位技术指南
  • JPEGView:Windows平台终极快速图像查看器完全指南
  • 谭待在养虾之城说了两件事,Seedance 2.0公测与ArkClaw场景化落地
  • 喧嚣过后,重塑「数字光环」:后 315 时代的 GEO 合规新纪元
  • 2026最新艺考培训机构推荐!云南/昆明优质艺考机构权威榜单发布 - 十大品牌榜
  • Python爬虫入门实战——从环境搭建到数据抓取(新手友好版)
  • 机械识图:半剖视图
  • 基于TMS320F28033的20MHz手持式双踪袖珍示波器设计与实现
  • 2026制造业海外社媒代运营与海外品牌营销推广:推荐几家海外营销推广代运营公司及Linkedin营销服务商(附带联系方式) - 品牌2026
  • Unsloth快速部署:conda环境配置+模型下载完整教程
  • Drafting Modeler Overview-描述工程绘图组件的基础原理
  • 才聚:国内最早从事PMP培训的机构
  • 送礼饰品推荐篇
  • 基于Isaac Sim 4.5和MuJoCo的自研人形机器人运动技能训练与迁移全流程
  • 首右双拼,分区设计更易学,单字当量更低,左右互击更舒服!
  • 口碑好的3D动画源头厂家哪家专业
  • 3步突破:Cursor Pro功能全解锁的技术实现方案
  • Java实战:指定长度随机验证码生成+用户输入验证
  • 2026最新音乐艺考机构权威推荐 - 十大品牌榜
  • BiliBiliCCSubtitle:B站字幕高效解决方案,解决字幕获取、格式转换与批量处理难题
  • 2026 贵阳市南明区美妆培训学校优质推荐榜 —— 化妆 / 美甲 / 新娘妆 / 纹绣专项测评 - 深度智识库
  • 2026 年,DD4 内存条平台为何仍备受关注?
  • 基于InSAR与机器学习参数反演的滑坡数值模拟:从三维形变分解到Massflow运动模拟
  • 昇腾平台大模型LoRA微调全链路优化与高性能部署指南
  • Zotero文献元数据优化:3大突破终结括号混乱的效率革命
  • Linux查看进程内存占用的六种方法