下面是详细讲解如何整合 UC 后避免 DZ(Discuz!)等其他应用修改密码不同步的解决方法的完整攻略。
问题描述
在整合UC后,如果用户在 DZ 等其他应用修改了密码,不会同步到 UC,使得用户无法在其他应用上使用新密码登录。
解决方法
1. 升级UC到最新版本
首先,确保你已经将 UC 升级到最新版本。在新版本中,UC 已经完善了密码同步的机制,可以轻松解决密码同步的问题。
2. 修改 DZ 原有密码机制为 UC 账号体系
其次,将 DZ 等其他应用的密码机制修改为 UC 账号体系,这样就能保证 UC 账号体系下的密码同步机制能够正常工作。具体做法如下:
- 在 UC 中添加 DZ 应用
在 UC 的管理后台中,添加 DZ 应用。在菜单 “应用管理” -> “添加新应用”,填入 DZ 应用的相关信息,包括应用名称、应用的域名等。添加完成后,在UC管理后台“应用管理”中会看到 DZ 应用的列表。
- 修改 DZ 相关配置文件
在 DZ 安装目录中找到 “config/config_global.php” 这个文件,打开该文件,并找到类似以下代码的代码块:
// Ucenter Home设置
$_SC['uchome']=array(
'enable' => true,
'enterprisecredit' => 0,
'creditbase' => 0,
'credit' => 'credit1',
'register' => true,
'newusergroupid' => 10,
);
将其中的 'enable' => true,
修改为 'enable' => false,
,并添加以下代码:
// Ucenter设置
if (!defined('UC_API')) {
define('UC_API', 'http://uc.example.com');
define('UC_APPID', '1');
define('UC_KEY', 'yourkey');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', 'boss');
define('UC_DBNAME', 'ucenter');
define('UC_TABLE_PREFIX', 'uc_');
}
注意,UC_API
的值要改为你自己 UC 的域名,UC_APPID
为 UC 中 DZ 应用的 App ID,UC_KEY
为 UC 的通信密钥,UC_DBHOST
、UC_DBUSER
、UC_DBPW
、UC_DBNAME
和 UC_TABLE_PREFIX
填写你自己相应的数据库信息。
- 清空 DZ 缓存
清空 DZ 的缓存,保证修改后的 DZ 配置文件生效。在 DZ 的安装目录中,找到 data/cache 目录,将该目录下的所有文件删除。
- 修改 DZ 数据库中的相关表
在 UC 和 DZ 的账号体系不同步时,修改 DZ 中的 password 字段是无效的。要想修改密码后同步到 UC,需要对 DZ 和 UC 数据库中的相关表进行修改。具体操作如下:
(1)先在 UC 的数据库中运行以下 SQL 语句:
ALTER TABLE uc_members ADD COLUMN password_salt CHAR(6) NOT NULL DEFAULT '';
(2)接着,在 DZ 的数据库中运行以下 SQL 语句:
ALTER TABLE pre_ucenter_members ADD COLUMN salt CHAR(6) NOT NULL DEFAULT '';
UPDATE pre_ucenter_members SET salt=SUBSTRING(password, 1, 6);
UPDATE pre_ucenter_members SET password_salt=salt WHERE uid IN (SELECT uid FROM pre_common_member);
ALTER TABLE pre_ucenter_members DROP COLUMN salt;
这段代码将会给 uc_members 表添加一个新的字段 password_salt,以及通过 pre_ucenter_members 表与 pre_common_member 的联合查询,将 DZ 中的用户的 salt 和 password_salt 同步起来,使得在 DZ 中修改密码后,密码能够同步到 UC 中去。
示例说明
示例一
某站点已经整合好了 UC 和 DZ,但是发现 DZ 中用户更改密码后不能同步到 UC 中。
为了解决这个问题,我们首先升级 UC 到最新版本。
然后,将 DZ 中的密码机制改成 UC 账号体系。
最后,清空缓存,修改数据库相关表的字段。修改完成后,用户在 DZ 中修改密码后,密码会同步到 UC 中,以保证用户一体化的体验。
示例二
另一个站点的用户密码也遇到了同步问题,而且已经升级了 UC 到最新版本。
在这种情况下,只需要将 DZ 中的密码机制改成 UC 账号体系,就可以轻松解决同步问题,也无需再修改数据库表了。
结论
通过以上解决方法,就可以避免整合 UC 后 DZ 等其他应用修改密码不同步的问题了。同时,提示一下,每次修改完 DZ、UC 等应用的配置文件后,要记得清空缓存,使配置文件生效。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:整合UC后DZ等其他应用修改密码不同步的解决方法 - Python技术站