# discuz-ucenter-api-for-java **Repository Path**: bitters/discuz-ucenter-api-for-java ## Basic Information - **Project Name**: discuz-ucenter-api-for-java - **Description**: Discuz3.2与Java 项目整合单点登陆,discuz 和 JAVA 对接需要一个中间件,它就是 Ucenter。Comsenz(康盛)的 UCenter 当前在国内的单点登录领域占据绝对份额,其完整的产品线令 UCenter 成为了账号集成方面事实上的标准。基于 UCenter,可以将 Comsenz 旗下的 Discuz!(社区论坛系统)、SupeSite(门户CMS系统)、X-Space(博客系统)从用户资源层面进行无缝整合,使得账号实现统一管理,在任何一个系统中进行注册、登录、注销等操作时,该账号在其他系统中的会话状态也将同步更新,最终实现一号通的单点登录模式。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2019-01-22 - **Last Updated**: 2023-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # discuz-ucenter-api-for-java #### 介绍 Discuz3.2与Java 项目整合单点登陆,discuz 和 JAVA 对接需要一个中间件,它就是 Ucenter。Comsenz(康盛)的 UCenter 当前在国内的单点登录领域占据绝对份额,其完整的产品线令 UCenter 成为了账号集成方面事实上的标准。基于 UCenter,可以将 Comsenz 旗下的 Discuz!(社区论坛系统)、SupeSite(门户CMS系统)、X-Space(博客系统)从用户资源层面进行无缝整合,使得账号实现统一管理,在任何一个系统中进行注册、登录、注销等操作时,该账号在其他系统中的会话状态也将同步更新,最终实现一号通的单点登录模式。 #### 软件架构 软件架构说明 #### 安装教程 1. UCenter配置 2. 运行WEB程序 3. 集成测试 #### 使用说明 1. UCenter配置。略 2. 源代码说明 src/api/ucenter/Base64.java src/api/ucenter/Client.java: 将常用的 UCenter 操作封装成的客户端对象,我们在项目中主要用它来与 UCenter 打交道 src/api/ucenter/PHPFunctions.java src/api/ucenter/UC.java: 本地的 JAVA 项目用来接收 UCenter 同步命令的 Servlet接口,其访问地址必须为: /api/uc.php src/api/ucenter/XMLHelper.java src/config.properties:本地的JAVA项目与UCenter的接口配置文件( 需要根据实际环境进行配置 ) WebRoot/WEB-INF/web.xml: 主要就是将 src/api/ucenter/UC.java 定义为 Servlet 3. 配置web.xml api com.discuz.interfaces.bbs.api.UC 2 api /api/uc.php 4. 整个配置就完成了,启动 Web 服务器后,打开 UCenter 控制台可以看到应用已经通讯成功了 5. 登陆代码 String tipStr = ""; if (!"".equals(user.getUserName())) { // 获取Ucenter的登陆结果,同步其他应用的登陆状态 Client uc = new Client(); String result = uc.uc_user_login(user.getUserName(), user.getPassword()); LinkedList rs = XMLHelper.uc_unserialize(result); if (rs.size() > 0) { int $uid = Integer.parseInt(rs.get(0)); String $username = rs.get(1); String $password = rs.get(2); String $email = rs.get(3); if ($uid > 0) { System.out.println("Ucenter登陆成功: " + $username + " " + $password + " " + $email); String $ucsynlogin = uc.uc_user_synlogin($uid); System.out.println("Ucenter登陆成功: " + $ucsynlogin); // 进行自己系统的登陆权限判断 if (user.getPassword().equals(new UserDAOImpl().checkUser(user.getUserName()))) { ctx.put("uclogin", $ucsynlogin); ctx.getSession().put("user", user); return SUCCESS; } }else if( $uid == -1) { tipStr = "用户不存在,或者被删除!"; }else if( $uid == -2) { tipStr = "密码错误!"; }else { tipStr = "未定义!"; } } } #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request