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

DataRoom与若依框架集成:单点登录与系统集成完整指南

DataRoom与若依框架集成:单点登录与系统集成完整指南

【免费下载链接】DataRoom🔥AI对话式生成大屏、页面,采用前后端一体化解决方案,几十种炫酷图表,支持20+数据来源接入,适用于大屏、低代码、BI场景,使用简单,代码完全开源。项目地址: https://gitcode.com/gh_mirrors/da/DataRoom

DataRoom是一款支持AI对话式生成大屏和页面的前后端一体化解决方案,提供了几十种炫酷图表和20+数据来源接入能力,广泛适用于大屏展示、低代码开发和BI分析场景。本文将详细介绍如何将DataRoom与若依(Ruoyi)框架实现无缝集成,重点讲解单点登录(SSO)配置和系统整合的完整步骤,帮助开发者快速构建统一身份认证的数据分析平台。

准备工作:环境与依赖检查

在开始集成前,请确保您的开发环境满足以下要求:

  • JDK 1.8+ 及Maven 3.6+
  • 若依框架(推荐最新稳定版本)
  • DataRoom源代码(通过git clone https://gitcode.com/gh_mirrors/da/DataRoom获取)
  • 数据库环境(MySQL 5.7+或PostgreSQL 10+)

核心依赖组件

DataRoom的单点登录功能主要依赖以下核心组件:

  • Shiro安全框架:负责认证与授权管理
  • JWT令牌:实现无状态身份验证
  • 自定义SSO适配器:处理与若依框架的用户信息同步

第一步:配置DataRoom单点登录参数

DataRoom通过配置文件支持灵活的单点登录设置,主要涉及两个关键配置类:DataRoomConfigSso

修改配置文件

  1. 打开DataRoom服务端配置文件dataRoomServer/src/main/resources/application.yml
  2. 添加或修改以下SSO配置节点:
dataroom: sso: enable: true currentUserUrl: http://your-ruoyi-domain/api/sys/user/getInfo adapter: "ruoyi" headerKey: "Authorization" headerValuePrefix: "Bearer"

配置参数说明

参数名说明若依框架推荐值
enable是否启用SSOtrue
currentUserUrl若依用户信息接口地址/api/sys/user/getInfo
adapterSSO适配器类型ruoyi
headerKey认证头名称Authorization
headerValuePrefix令牌前缀Bearer

第二步:实现若依SSO适配器

DataRoom通过ISsoAdapterService接口处理第三方系统用户信息适配,我们需要为若依框架实现专用适配器。

创建RuoyiSsoAdapter

  1. 创建适配器类文件dataRoomServer/src/main/java/com/gccloud/gcpaas/dataroom/core/shiro/sso/adapter/RuoyiSsoAdapter.java
  2. 实现用户信息转换逻辑:
@Component public class RuoyiSsoAdapter implements ISsoAdapterService { @Override public LoginUser adapter(JSONObject respObj) { LoginUser loginUser = new LoginUser(); // 从若依响应中提取用户信息 JSONObject userInfo = respObj.getJSONObject("user"); loginUser.setAccount(userInfo.getString("userName")); loginUser.setName(userInfo.getString("nickName")); loginUser.setId(userInfo.getString("userId")); // 处理角色信息 List<String> roles = respObj.getJSONArray("roles") .stream() .map(role -> ((JSONObject) role).getString("roleCode")) .collect(Collectors.toList()); loginUser.setRoleCodeList(roles); return loginUser; } }

配置适配器

在Spring配置类中注册适配器:

@Configuration public class SsoConfig { @Bean @ConditionalOnProperty(name = "dataroom.sso.adapter", havingValue = "ruoyi") public ISsoAdapterService ruoyiSsoAdapter() { return new RuoyiSsoAdapter(); } }

第三步:修改Shiro认证配置

DataRoom的Shiro配置位于dataRoomServer/src/main/java/com/gccloud/gcpaas/dataroom/core/shiro/ShiroConfiguration.java,需要调整过滤器链以支持SSO流程。

更新Shiro过滤器链

修改shiroFilter方法,添加若依回调路径例外:

filterMap.put("/dataRoom/sso/callback", "anon"); // 保留其他默认配置... filterMap.put("/**", "OAUTH");

配置JWT密钥同步

确保DataRoom的JWT密钥与若依框架保持一致:

@Bean public Jwt jwt() { Jwt jwt = new Jwt(); jwt.setSecret("ruoyi-secret-key"); // 使用若依框架的JWT密钥 jwt.setIssuer("ruoyi"); jwt.setExpire(86400); return jwt; }

第四步:若依框架配置调整

添加跨域支持

在若依框架的WebMvcConfig中添加DataRoom域名的跨域许可:

@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://dataroom-domain") .allowedMethods("GET", "POST") .allowCredentials(true); }

配置免密访问用户信息接口

在若依的ShiroConfig中,将用户信息接口设置为匿名访问:

filterChainDefinitionMap.put("/api/sys/user/getInfo", "anon");

第五步:集成测试与验证

启动服务

  1. 启动若依框架服务
  2. 启动DataRoom服务:
cd dataRoomServer mvn spring-boot:run

验证单点登录流程

  1. 访问DataRoom前端页面http://localhost:8080
  2. 系统应自动重定向到若依登录页面
  3. 使用若依账号登录后,应自动跳转回DataRoom并保持登录状态
  4. 检查用户信息是否正确同步:访问DataRoom的个人资料页面,确认显示的用户信息与若依一致

常见问题解决

1. 单点登录重定向循环

可能原因:Shiro过滤器配置错误或JWT密钥不匹配

解决方案

  • 检查ShiroConfiguration.java中的过滤器链顺序
  • 确保DataRoom与若依使用相同的JWT密钥和算法

2. 用户信息同步失败

可能原因:SSO适配器实现有误或若依接口返回格式变化

解决方案

  • 检查RuoyiSsoAdapter.java中的JSON解析逻辑
  • 通过日志确认若依接口返回格式:log.info("若依响应: {}", respBody)

3. 跨域访问被拒绝

解决方案

  • 确认若依框架的CORS配置包含DataRoom域名
  • 检查浏览器开发者工具的网络请求,确认认证头是否正确传递

总结

通过本文介绍的步骤,您已经成功实现了DataRoom与若依框架的单点登录集成。这种集成方案不仅实现了用户身份的统一管理,还保留了DataRoom强大的数据可视化和大屏展示能力。如需进一步扩展,可以考虑:

  • 实现细粒度的权限同步
  • 开发自定义数据集成插件
  • 构建统一的菜单和导航系统

DataRoom的完整源代码和更多集成示例可在项目仓库中找到,欢迎贡献代码和提出改进建议。

【免费下载链接】DataRoom🔥AI对话式生成大屏、页面,采用前后端一体化解决方案,几十种炫酷图表,支持20+数据来源接入,适用于大屏、低代码、BI场景,使用简单,代码完全开源。项目地址: https://gitcode.com/gh_mirrors/da/DataRoom

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1201363/

相关文章:

  • 从理论到实践:基于Zemax的双高斯物镜像差校正全流程解析
  • Prompt编排的工程化抽象:Chain、Router与Parallel三种模式的架构设计
  • 如何快速构建React Native跨平台应用:完整全栈JavaScript架构指南 [特殊字符]
  • 终极指南:如何使用JD-GUI图形化Java反编译工具解密字节码
  • 【新手必看】C++核心语法与STL实战速通指南(从零到应用一气呵成)
  • 网络安全Agent合集网络安全Skill
  • C++实战OPC UA客户端开发:从协议原理到工业数据采集应用
  • 如何快速搭建Flask项目?Flask-Foundation最佳实践详解
  • Clypra特效使用指南:打造惊艳的视频视觉效果
  • AcWing算法提高课思路速查:图论
  • AI应用日志安全实践:从AES加密到KMS密钥管理的全链路方案
  • Glance安全最佳实践:确保Haskell代码可视化的安全指南
  • Canva AI图像生成实战手册:从零到爆款海报,3步搞定专业级视觉设计
  • OpenClaw Windows一键部署实战指南:原生适配与容错安装
  • TradingView图表库多框架整合实战:从Web到移动端的完整解决方案
  • Devstral 2 123B Instruct 2512:开源大模型在软件工程中的应用
  • FPGA开发必备:UART协议详解与实战优化
  • AI 驱动的独立产品微前端编排:子应用组合的智能化调度方案
  • Dropify错误处理与调试:解决常见问题的完整排查手册
  • SeedCracker支持的10种结构详解:海洋神庙、末地城等破解技巧
  • 计算机二级C语言备考指南:公共基础与编程核心考点解析
  • 电脑连WiFi没网?别急着重启,先检查这个隐藏的频段设置
  • Blog.Admin微信集成指南:如何实现微信公众号管理功能
  • C++异常处理:从基础语法到RAII与标准异常体系的实战指南
  • Trae远程开发启动失败:Server did not start successfully 根因诊断
  • 代码相似度检测:用AST分析发现“换皮“的提交
  • Glance项目路线图:未来可视化编辑器的设计构想
  • SingGuard-2b-GGUF核心功能解析:动态推理与运行时策略适配的终极指南
  • LINE Bot SDK PHP入门指南:5分钟快速搭建你的第一个LINE聊天机器人
  • ANSYS2022安装失败根因解析:.NET Framework与License Manager深度排障