UCenter 是由 Comsenz(康盛)开发的一套开源的、通用的网站用户中心系统,它为多个应用(如 Discuz!, SupeSite, X-Space, DedeCMS 等)提供统一的用户管理接口,实现用户信息的同步。
整合的核心目标:
- 统一注册: 用户在任何一个整合了 UCenter 的应用中注册,都会自动成为所有应用的合法用户。
- 统一登录: 用户在一个应用中登录后,可以自动登录到其他所有整合的应用,无需重复输入密码。
- 统一退出: 用户在一个应用中退出登录,会自动退出所有应用的登录状态。
- 数据同步: 用户的密码、个人资料等信息在各个应用之间保持同步。
第一步:准备工作
在开始之前,请确保你已经准备好以下环境:
- Web 服务器: 如 Apache 或 Nginx。
- PHP 环境: 建议 PHP 5.6 或更高版本(根据你的 DedeCMS 版本而定)。
- MySQL 数据库: 用于存储 UCenter 和 DedeCMS 的数据。
- 软件包:
- UCenter 官方最新版: https://www.comsenz.com/downloads/ucenter
- DedeCMS 官方最新版: https://www.dedecms.com/
第二步:安装 UCenter
这是整合的基础,必须先完成。
- 上传文件: 将下载的 UCenter 压缩包解压,然后将
upload目录下的所有文件上传到你的网站根目录,上传到http://www.yourdomain.com/uc_server/。 - 创建数据库: 在你的 MySQL 中创建一个新的数据库,
ucenter_db,并记下数据库名、用户名和密码。 - 运行安装程序: 在浏览器中访问
http://www.yourdomain.com/uc_server/install/index.php。 - 按照安装向导操作:
- 同意协议: 点击 "我同意"。
- 环境检测: 确保所有环境检测都通过。
- 数据库配置: 填入你刚刚创建的数据库名、用户名和密码。
- 管理员信息: 设置 UCenter 后台的管理员用户名和密码。
- 安装完成: 安装程序会生成一个
config.inc.php文件,并显示 UCenter 的管理后台地址和管理员账号。
重要: 安装成功后,不要删除或移动 uc_server 目录,也不要删除 config.inc.php 文件,这个文件包含了 UCenter 的核心配置信息,其他应用需要通过它来连接 UCenter。
第三步:安装 DedeCMS
- 上传文件: 将 DedeCMS 的安装包解压,将
dedecms目录下的所有文件上传到你的网站根目录,上传到http://www.yourdomain.com/。 - 运行安装程序: 在浏览器中访问
http://www.yourdomain.com/install/index.php。 - 按照安装向导操作:
- 同意协议: 点击 "同意"。
- 环境检测: 确保所有环境检测都通过。
- 数据库配置: 这里要特别注意!
- 数据库名: 填入一个新的数据库名,
dedecms_db,不要使用 UCenter 的数据库。 - 数据库用户名/密码: 填入你的数据库凭据。
- 数据库名: 填入一个新的数据库名,
- 网站信息: 设置网站名称、管理员账号等。
- 安装完成: DedeCMS 会安装到你的网站根目录。
重要: DedeCMS 安装成功后,删除 install 目录以确保安全。
第四步:配置 DedeCMS 连接 UCenter
这是整合的关键步骤,让 DedeCMS 知道如何与 UCenter 通信。
-
找到配置文件: 在 DedeCMS 的安装目录下,找到文件
/uc_client/config.inc.php。 -
修改配置文件: 用文本编辑器(如 Notepad++、VS Code)打开
config.inc.php文件,找到并修改以下几项:<?php define('UC_CONNECT', 'mysql'); // 连接 UCenter 的方式,保持 'mysql' 即可 define('UC_DBHOST', 'localhost'); // UCenter 数据库服务器地址,通常是 'localhost' define('UC_DBUSER', 'your_uc_db_user'); // UCenter 数据库用户名 define('UC_DBPW', 'your_uc_db_password'); // UCenter 数据库密码 define('UC_DBNAME', 'ucenter_db'); // UCenter 数据库名 define('UC_DBCHARSET', 'utf8'); // 数据库字符集,保持 'utf8' define('UC_DBTABLEPRE', '`ucenter_db`.uc_'); // UCenter 数据库表前缀,注意格式:'`数据库名`.`表前缀'' define('UC_COOKIEPATH', '/'); // Cookie 作用路径,保持 '/' define('UC_COOKIEDOMAIN', ''); // Cookie 作用域名,保持空即可 define('UC_APPID', '1'); // DedeCMS 在 UCenter 中的应用 ID,这个值待会儿要确定 define('UC_KEY', 'your_uc_key'); // 通信密钥,这个值待会儿要确定 // ... 其他配置保持默认 ...问题来了:
UC_APPID和UC_KEY怎么来? -
在 UCenter 后台添加 DedeCMS 应用:
- 登录你的 UCenter 管理后台:
http://www.yourdomain.com/uc_server/ - 在左侧菜单中找到 “应用管理” -> “添加新应用”。
- 应用类型: 选择 “其他”。
- 应用名称: 填入你的 DedeCMS 网站名称,“我的 DedeCMS 网站”。
- 应用的主 URL: 填入你的 DedeCMS 网站地址,
http://www.yourdomain.com/。 - 应用 IP: 保持默认即可。
- 通信密钥: 系统会自动生成一串随机字符,请务必复制并保存好。
- 是否开启同步登录: 选择“是”。
- 是否开启同步注册: 选择“是”。
- 是否开启同步退出: 选择“是”。
- 其他选项保持默认。
- 点击 “提交”。
- 登录你的 UCenter 管理后台:
-
获取配置信息并更新 DedeCMS:
- 提交后,UCenter 会显示一个“安装成功”的页面。
- 请务必将页面上的以下信息复制下来:
- 应用 ID
- 通信密钥
- 回到 DedeCMS 的
config.inc.php文件,将刚才复制的 应用 ID 填入define('UC_APPID', '1');中,将 通信密钥 填入define('UC_KEY', 'your_uc_key');中。
第五步:修改 DedeCMS 模板以显示登录/注册状态
为了让用户能看到统一的登录/注册/退出按钮,你需要修改 DedeCMS 的模板文件。
-
找到模板文件: DedeCMS 的模板文件通常位于
/templets/default/目录下,你需要修改的是网站的头部模板,通常是head.htm。 -
修改登录/注册代码: 在
head.htm文件中,找到处理用户登录状态的代码块(通常在{dede:php}标签内或直接输出变量的地方)。替换前(DedeCMS 原始代码可能类似这样):
<a href="{dede:global.cfg_memberurl/}/index_do.php?fmdo=login&dopost=login">登录</a> <a href="{dede:global.cfg_memberurl/}/index_do.php?fmdo=login&dopost=regnew">注册</a>替换后(整合 UCenter 后的代码): 我们需要调用 UCenter 提供的 JS 来动态生成登录状态。
在
<head>标签内加入 UCenter 的 JS 调用代码:<script type="text/javascript" src="{dede:global.cfg_cmsurl/}/uc_client/js/default.js"></script>然后在原来显示登录/注册按钮的地方,替换为 UCenter 的 JS 输出:
<div id="umenu"> <script type="text/javascript"> // UCenter 菜单调用 document.write('<div id="uc_userinfo"></div>'); // 初始化 UCenter 菜单 uc_userinfo(); </script> </div>这样,
uc_userinfo()这个 JS 函数就会根据用户的登录状态,自动显示“欢迎您,[用户名] | 退出”或“登录 | 注册”。
第六步:测试
所有配置都已完成,请进行以下测试:
-
测试注册:
- 访问你的 DedeCMS 网站,点击“注册”按钮。
- 填写用户名、密码等信息进行注册。
- 注册成功后,登录 UCenter 后台,在 “用户管理” 中查看是否出现了这个新用户。
- (可选)如果你还安装了 Discuz! 论坛,检查论坛是否也出现了这个新用户。
-
测试登录:
- 在 DedeCMS 网站上退出登录。
- 然后在 DedeCMS 网站上登录刚才注册的账号。
- 登录成功后,检查 UCenter 后台该用户的“最后登录时间”是否更新。
- (可选)检查 Discuz! 论坛是否也自动登录了。
-
测试退出:
- 在 DedeCMS 网站上点击“退出”。
- 检查 UCenter 后台该用户是否已退出(通常需要刷新页面)。
- (可选)检查 Discuz! 论坛是否也退出了登录。
如果以上所有测试都通过,那么恭喜你,DedeCMS 与 UCenter 的整合已经成功!
常见问题与排错
-
问题1:整合后,用户在 DedeCMS 注册,但 UCenter 中没有用户。
- 原因: 通信失败,最常见的原因是
config.inc.php文件中的数据库信息、通信密钥或应用 ID 填写错误。 - 解决: 仔细核对
config.inc.php文件中的每一项配置,确保与 UCenter 后台“应用管理”中显示的信息完全一致。
- 原因: 通信失败,最常见的原因是
-
问题2:登录/注册按钮不显示或显示异常。
- 原因: JS 文件路径错误或 JS 函数调用失败。
- 解决: 检查
<head>标签内引入的default.js路径是否正确({dede:global.cfg_cmsurl/}通常会解析为你的网站根目录),打开浏览器开发者工具(F12),查看 Console 控制台是否有 JS 错误信息。
-
问题3:整合后网站出现白屏或 500 错误。
- 原因: 通常是 PHP 代码错误或权限问题。
- 解决: 检查
config.inc.php文件的 PHP 语法是否正确,确保uc_client目录和config.inc.php文件有正确的读写权限(通常是 755 或 644)。
-
问题4:数据库名称和表前缀写错了。
- 这是一个致命错误! 在
config.inc.php中,UC_DBNAME必须是 UCenter 的数据库名,UC_DBTABLEPRE的格式必须是 数据库名'.'表前缀'**,例如'ucenterdb'.uc`**,很多人会在这里写错,导致无法连接。
- 这是一个致命错误! 在
希望这份详细的教程能帮助你顺利完成整合!
