DataRoom与若依框架集成单点登录与系统集成完整指南【免费下载链接】DataRoomAI对话式生成大屏、页面采用前后端一体化解决方案几十种炫酷图表支持20数据来源接入适用于大屏、低代码、BI场景使用简单代码完全开源。项目地址: https://gitcode.com/gh_mirrors/da/DataRoomDataRoom是一款支持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是否启用SSOtruecurrentUserUrl若依用户信息接口地址/api/sys/user/getInfoadapterSSO适配器类型ruoyiheaderKey认证头名称AuthorizationheaderValuePrefix令牌前缀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)); // 处理角色信息 ListString 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的完整源代码和更多集成示例可在项目仓库中找到欢迎贡献代码和提出改进建议。【免费下载链接】DataRoomAI对话式生成大屏、页面采用前后端一体化解决方案几十种炫酷图表支持20数据来源接入适用于大屏、低代码、BI场景使用简单代码完全开源。项目地址: https://gitcode.com/gh_mirrors/da/DataRoom创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考