第三方系统集成若依权限校验
假设系统A是由若依管理系统进行的二次开发保留了若依的用户、权限、角色管理功能第三方系统B想要调我们的系统A的接口就得先集成我们的SDK这样就可以通过我们系统A的权限、角色校验从而完成接口调用一 开发若依SDK工具包新建一个springboot项目4.x版本,去掉启动类pom.xml如下?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.ultrahd/groupIdartifactIdultrahdCommonUtils/artifactIdversion0.0.1-SNAPSHOT/versionnameultrahdCommonUtils/namedescriptionultrahdCommonUtils/descriptionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion4.0.3/version/dependency!-- OkHttp 依赖 --dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.12.0/version/dependency!-- JSON 依赖 --dependencygroupIdorg.json/groupIdartifactIdjson/artifactIdversion20231013/version/dependency/dependenciesbuild/build/project新建sdk工具类GetTokenServicepackagecom.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(){OkHttpClientclientnewOkHttpClient();MediaTypemediaTypeMediaType.parse(application/json);RequestBodybodyRequestBody.create(mediaType,{\username\:\username\,\password\:\password\,\code\:\\,\uuid\:\\});RequestrequestnewRequest.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\:\\});Responseresponseclient.newCall(request).execute();StringresponseBodyresponse.body().string();System.out.println(响应状态码response.code());System.out.println(响应内容responseBody);if(response.isSuccessful()){try{JSONObjectjsonnewJSONObject(responseBody);if(json.has(token)){tokenjson.getString(token);System.out.println(登录成功获取到tokentoken);}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;}}新建配置类UltrahdCommonUtilsAutoConfigurationpackagecom.ultrahd.ultrahdcommonutils.config;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;ConfigurationComponentScan(basePackagescom.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-DfileE:\jar\ultrahdCommonUtils-0.0.1-SNAPSHOT.jar-DgroupIdcom.ultrahd-DartifactIdultrahdCommonUtils-Dversion0.0.1-SNAPSHOT-Dpackagingjar可以在仓库看到刚上传的包引入SDK依赖dependencygroupIdcom.ultrahd/groupIdartifactIdultrahdCommonUtils/artifactIdversion0.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;RestControllerRequestMapping(/test)publicclassGetTokenController{AutowiredprivateGetTokenServicegetToken;GetMapping(/getToken)publicvoidlist(){StringtokengetToken.getToken();System.out.println(token值:token);}}带着这个token作为请求头去请求系统A里的接口即可RequestrequestnewRequest.Builder().url(BASE_URLapiPath).get().addHeader(Authorization,Bearer token)//注意在这里加请求头.build();Responseresponseclient.newCall(request).execute();System.out.println(接口响应response.body().string());
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2479416.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!