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通过配置文件支持灵活的单点登录设置,主要涉及两个关键配置类:DataRoomConfig和Sso。
修改配置文件
- 打开DataRoom服务端配置文件
dataRoomServer/src/main/resources/application.yml - 添加或修改以下SSO配置节点:
dataroom: sso: enable: true currentUserUrl: http://your-ruoyi-domain/api/sys/user/getInfo adapter: "ruoyi" headerKey: "Authorization" headerValuePrefix: "Bearer"配置参数说明
| 参数名 | 说明 | 若依框架推荐值 |
|---|---|---|
| enable | 是否启用SSO | true |
| currentUserUrl | 若依用户信息接口地址 | /api/sys/user/getInfo |
| adapter | SSO适配器类型 | ruoyi |
| headerKey | 认证头名称 | Authorization |
| headerValuePrefix | 令牌前缀 | Bearer |
第二步:实现若依SSO适配器
DataRoom通过ISsoAdapterService接口处理第三方系统用户信息适配,我们需要为若依框架实现专用适配器。
创建RuoyiSsoAdapter
- 创建适配器类文件
dataRoomServer/src/main/java/com/gccloud/gcpaas/dataroom/core/shiro/sso/adapter/RuoyiSsoAdapter.java - 实现用户信息转换逻辑:
@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");第五步:集成测试与验证
启动服务
- 启动若依框架服务
- 启动DataRoom服务:
cd dataRoomServer mvn spring-boot:run验证单点登录流程
- 访问DataRoom前端页面
http://localhost:8080 - 系统应自动重定向到若依登录页面
- 使用若依账号登录后,应自动跳转回DataRoom并保持登录状态
- 检查用户信息是否正确同步:访问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),仅供参考
