当前位置:网络笔记-营销软件破解基地 → 网络资讯 → 网页设计
日期:2009-06-01 19:26:37  来源:本站整理

PHP版单点登陆实现方案

世雄
   a) UClientSSO::checkUserLogin()方法如下:
[php]/**
* 用户单点登陆验证函数
*
* @return array   - integer $return['status'] 大于 0:返回用户 ID,表示用户登录成功
*                                                                                                    0:用户没有在全站登陆
*                                                -1:用户不存在,或者被删除
*                                                -2:密码错
*                                                -3:未进行过单点登陆处理
*                                                                                                  -11:验证码错误
*                                          string $return['username']     : 用户名
*                                          string $return['password']     : 密码
*                                          string $return['email']        : Email
*/
public static function checkUserLogin(){
        self::_init();
        $ret = array();
        $_sessId = self::_getLocalSid();
        if (empty($_sessId)) {
                //永久记住账号处理
                if(isset($_COOKIE[_UC_USER_COOKIE_NAME]) && !empty($_COOKIE[_UC_USER_COOKIE_NAME])) {

                        //
                        // 根据cookie里的用户名和密码判断用户是否已经登陆。
                        //
                        $_userinfo = explode('|g|', self::authcode($_COOKIE[_UC_USER_COOKIE_NAME], 'DECODE', self::$_authcodeKey));

                        $username = $_userinfo[0];
                        $password = isset($_userinfo[1]) ? $_userinfo[1] : '';
                        if (empty($password)) {
                                $ret['status'] = -3;
                        } else {
                                return self::loginSSO($username, $password, true, true);
                        }

                } else {
                        $ret['status'] = -3;
                }

        } else {
                //
                //本站原先已经登陆过,通过保留的sesson id存根去用户中心验证
                //
                $_params  = array(
                        'sessId'   => $_sessId,
                        'siteFlag' => self::$site,
                        'checksum' => md5($_sessId . self::$site . self::$_mcComunicationKey)
                );
                $aRet = self::_callSoap('getOnlineUser', $_params);
                if (intval($aRet['resultFlag']) > 0) {
                        //成功登陆
                        $ret = $aRet['userinfo'];
                } else {
                        $ret['status'] = $aRet['resultFlag'];
                }
        }

        return $ret;
}                   [/php]

         b) 用户验证中心的webservice服务程序,接收到检验登陆的请求后,调用UCenter::getOnlineUser()方法来处理登陆请求:
[php]/**
* 根据sid,获取当前登陆的用户信息
*
* @param string $sessId        - 全站唯一session id,用做ticket
* @return array
*/
/**
* 根据sid,获取当前登陆的用户信息
*
* @param string $sessId        - 全站唯一session id,用做ticket
* @return array
*/
static public function getOnlineUser($sessId, $siteFlag) {
        self::_init();
        session_id(trim($sessId));
        session_start();

        $ret = array();
        $_userinfo = $_SESSION[self::$_ucSessKey];

        if (isset($_userinfo['username']) && isset($_userinfo['password']) &&
                self::_getUserPassSalt($_userinfo['username'], $_userinfo['password'])) {
                $ret['resultFlag'] = "1";
                $ret['userinfo'] = $_userinfo;

                self::registerLoggedSite($siteFlag, $sessId);                //记住已登陆战
                unset($ret['userinfo']['salt']);
        } else {
                $ret['resultFlag'] = "0";
        }

        return ($ret);
}         [/php]

上一页  [1] [2] [3] [4] 下一页

  • 上一页  [1] [2] [3] [4]  下一页

  • Tags:

    作者:佚名

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接- 网站地图

    Copyright 网络笔记 © 2009-2010 www.WLBIJI.cn . All Rights Reserved.
    我们还在努力  页面执行时间:9,125.00000 毫秒      粤ICP备09052723号
    用我们的软件产品将使您的推广更轻松,同时使您的推广成本降到最低! 站长QQ: 274191541