現(xiàn)象:修改密碼時(shí),UCenter通知其它應(yīng)用的密碼為空。
解釋:UCenter原始程序在修改密碼時(shí),其實(shí)并沒有對密碼進(jìn)行同步傳遞,看uc_client源碼發(fā)現(xiàn),Discuz! 接收的同步密碼也只是隨機(jī)生成的字符串??赡苁菫榱税踩蚰撤N原因!
解決:對UCenter的服務(wù)器端(uc_server)程序進(jìn)行修改,添加密碼的同步通知!具體操作如下:
1、UCenter后臺(tái)更改密碼后的通知程序:uc_servercontroladminuser.php,將其中的以下代碼:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');
修改為:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$orgpassword);
2、UC通知程序:uc_servercontroluser.php,將其中的以下代碼:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');
修改為:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$newpw);
另外,如果是在應(yīng)用里修改密碼,而應(yīng)用程序使用獨(dú)立用戶數(shù)據(jù)庫,則需要修改ucenter客戶端(uc_client)的相應(yīng)代碼:
打開 uc_clientcontroluser.php 查找
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');
修改為:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$newpw);