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

📅 2026/7/16 17:23:22 👁️ 阅读次数 📝 编程学习
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),仅供参考