关于ucenter实现同步登录的机制

来源:互联网 发布:知乎美女集锦 编辑:程序博客网 时间:2024/05/01 07:58

 

echo uc_user_synlogin($uid)---------->登录信息------->远程ucter地址---返回输出内容:

 

$synstr .= '<script type="text/javascript" src="'.$app['url'].'/api/'.$app

 

['apifilename'].'?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.$this->user

 

['username'].'&uid='.$this->user['uid'].'&password='.$this->user['password']."&time=".$this->time, 'ENCODE', $app

 

['authkey'])).'" reload="1"></script>';

 

在ucenter当中$app['apifilename'].默认为uc.php这也是为什么这个文件都要放在api文件夹下了,这个时候如果你要与ucenter当中的其他应用同步登录,就需要你对uc.php进行编码了,一般只要对ucenter服务端的参数进行解码之后,再与你当前所需要的应用在登录时的cookie或是session一致就可以了。

 

 

举个例子吧:

就比如我从discuz这个应用登录后,登录信息将会传递到ucenter服务端,此时ucenter服务端会对当前ucenter当中的所有应用进行javascript的内容的连接

foreach($this->cache['apps'] as $appid => $app) {

  if($app['synlogin'] && $app['appid'] != $this->app['appid']) {

        $synstr .= '<script type="text/javascript" src="'.$app['url'].'/api/'.$app['apifilename'].'

        ?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.

        $this->user['username'].'&uid='.$this->user['uid'].'&password='.$this->user['password']."&time=".$this->time, 'ENCODE',         $app['authkey'])).'" reload="1"></script>';

    }

}

因为当应用与ucenter整合时,同一个帐号在不同应用之中的密码是相同的.

这个时候就是应用中的uc.php发辉作用的时候了,再简单点不是  应用--->ucenter服务-->应用

 

 

如果是自已的程序一定要用ucenter整合的话,我的建议除了uid用户名与密码直接从ucenter从读就可以了,如果不是这种情况,可以在自己写的应用里面,先判断有没有用到ucenter整合,如果有,那就判断ucenter的,没有就判断自己的表当中的用户名与密码,如果修改用户与密码也调用ucenter当中的函数,让密码与ucenter当中的一样,我不知道,像dedecms当中登录时与ucenter整合是不是也是这样的,改天去研究下,再来这边接着写

原创粉丝点击