TA的每日心情 | 郁闷 昨天 08:34 |
---|
签到天数: 1496 天 连续签到: 5 天 [LV.10]以坛为家III
|
在PHPWEB1.1.6以后,可以通过后台的会员模块参数设置,设置UCENTER接口参数,设置参数前请先将本接口程序包上传到网站的api目录,如果网站没有api目录,可先创建api目录,正确的结构是:
/api/uc.php
/api/uc_api/
由于UCenter在第三方应用的接口方面还存在很多问题,PHPWEB提供的接口仅包括用户注册、登录和用户密码修改三部分
一、用户注册
1、在PHPWEB用户注册时,校验UCenter用户是否存在,不存在则通过接口通知UCenter的全部应用增加该用户
2、如果其它应用也是PHPWEB,将直接增加用户,如果是DISCUZ!等应用,则需激活用户
3、本接口在测试时发现,在DISCUZ!注册用户时未通知PHPWEB增加用户,疑DISCUZ!本身存在不兼容缺陷(和UCenter开发手册不一致);针对这一问题,PHPWEB在登录时如果发现UCenter中存在用户且通过密码校验,则直接登录并在PHPWEB添加用户
二、用户登录
在PHPWEB用户登录时,先校验UCenter用户
1、如果用户通过UCenter校验,再校验本系统用户密码,全部通过登录成功,并通知其它应用进入登录状态
2、如果用户在UCenter不存在,而在PHPWEB通过校验,则通知UCenter增加用户
3、如果用户在UCenter存在但密码不一致,而PHPWEB校验通过,则仅登录当前PHPWEB系统,不通知其它应用进入登录状态
4、本接口在测试时发现,在PHPWEB登录时成功通知DISCUZ!和其它PHPWEB应用进入登录状态,但在DISCUZ!登录时,PHPWEB的UC.PHP未能收到任何通知,疑为DISCUZ!的BUG
三、密码修改
1、在PHPWEB会员中心重设用户密码时,通知其它PHPWEB应用修改密码
2、UCenter原始程序在修改密码时,实际上并没有对密码进行传递,DISCUZ!自己的接收程序只是随机生成了新密码,并没有将密码修改为UCenter一致的密码(无言)
3、如果要使密码修改有效,请用户自行对UCenter的服务器端(uc_server)程序进行修改(UCenter 1.5.0)
1)UC后台更改密码后的通知程序:uc_server\control\admin\user.php 289行
原:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');
更改为:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$orgpassword);
2)UC通知程序:uc_server\control\user.php 99行
原:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');
更改为:
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$newpw);
3)如果要让DISCUZ!修改密码后通知其它PHPWEB修改密码,则要修改Discuz!的uc_client\control\user.php 第99行
$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.$newpw);
当然,这个修改只能让DISCUZ!通知PHPWEB,而不能通知其它的DISCUZ!类应用,DISCUZ!的密码修改接收程序本身不支持修改密码
另外,UCenter在用户删除时,只传输了UID,没有传输username,作为独立的应用软件,是不可能让会员ID和UCenter的用户ID保持一致的,应该以username作为用户唯一性的参照比较合理
由于本人一直不能在DISCUZ.NET的UCenter BUG报告区发帖,期待有权限发帖的用户将问题报告给UCenter官方,期待UCenter能更好地兼容第三方应用。
下载地址:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即加入
x
|