4. 单点登出时,调用UClientSSO::logoutSSO()方法。调用成功后,如需其他已登陆站立即登出,请调用 UClientSSO::getSynloginScript()方法获取W3C标准的script,在页面输出。
a) UClientSSO::logoutSSO()方法如下:
<?php
/**
* 全站单点登出
* - 通过webservice请求注销掉用户的全站唯一标识
*
* @return integer 1: 成功
* -11:验证码错误
*/
public static function logoutSSO(){
self::_init();
$_sessId = self::_getLocalSid();
//
//本站没有登陆的话,不让同步登出其他站
//
if (empty($_sessId)) {
self::_initSess(true);
return false;
}
$_params = array(
'sessId' => $_sessId,
'siteFlag' => self::$site,
'checksum' => md5($_sessId . self::$site . self::$_mcComunicationKey)
);
$aRet = self::_callSoap('logoutUCenter', $_params);
if (intval($aRet['resultFlag']) > 0) {
//成功登出
self::_removeLocalSid(); //移除本站记录的sid存根
self::$_synlogoutScript = urldecode($aRet['script']);
$ret = 1;
} else {
$ret = $aRet['resultFlag'];
}
return intval($ret);
} [/php]
b) 用户验证中心的webservice服务程序,接收到全站登出请求后,调用UCenter::loginUCenter()方法来处理登陆请求:
/**
* 登出全站处理
*
* @param string - 全站唯一session id,用做ticket
* @return boolean
*/
static public function logoutUCenter($sessId) {
self::_init();
session_id(trim($sessId));
session_start();
$_SESSION = array();
return empty($_SESSION) ? true : false;
}
?>
四. 代码部署:
1. 用户验证中心设置
a) 用户验证中心向分站提供的webservice服务接口文件,即UserSvc.php部署在hostname/webapps/port/ UserSvc.php中。查看wsdl内容,请访问https://hostname/port/ UserSvc.php?wsdl
b) 用户中心用户单点服务类文件为UCenterSSO.class.php,文件路径为在hostname/webapps/include /UCenterSSO.class.php。该文件为用户单点登陆处理 的服务端类,被hostname/webapps/port/ UserSvc.php调用。用于获取用户的登陆信息,是否单点登陆的状态信息,单点登出处理等。
c) 用户验证中心通过W3C标准,利用cookie方式记录,删除全站统一的用户唯一随机id 的脚本文件为hostname/webapps/port/cookie_mgr.php.
2. 子站点设置
a) 各子站点请将,UClientSSO.class.php部署在用户中心服务客户端目录下。部署好后,请修改最后一行的UClientSSO::setSite('1'); 参数值为用户验证中心统一分配给各站的标识id.







