为何UCenter能同步登陆连接的应用?

1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。

2、如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid))。

3、然后这个函数后向Ucenter的index.php传递数据,index.php接受传递的数据,获得model为user,action为synlogin的值。

4、然后Ucenter的index.php调用control目录下的user.php类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;即通过get方式传递给各个应用目录中api下的uc.php一些数据。

5、uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie。

6、各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。

应用程序的logging.php ->uc_client中的client.php->Ucenter->应用程序中api/uc.php 其实Ucenter实现同步登陆的原理就是cookie,一个应用登陆成功之后,向Ucenter传递数据,让Ucenter通知其他的应用也设置cookie,这样用户在访问其他应用的时候通过已经设置好的cookie实现自动登陆。

了解了Ucenter的同步原理,再遇到无法同步登陆,或者开发一些与UCenter接口的时候就会容易很多。

相关推荐:
jQuery3.0之后除了标准版本之外,还推出了一个全新的模式版本,我们可以称之为瘦身的版本,官方命名为“Slim”。 最主要的区别就是,如果你不使用 AJAX、效果等功能,就可以选择使用这个廋身版“Slim”的 jQuer …
Win10以及之前的Win7/Win8/Win8.1在有密码的情况下会在登录画面要求用户输入密码,这是出于安全考虑。可有时候我们也许不想要输入密码,但又不想直接去掉密码。 有没有什么办法让Win10自动登录呢? 当然有 …
微软安全研究人员通过官方博客发出警告,为俄罗斯政府工作的黑客正利用各种物联网设备如打印机和视频解码器作为立足点渗透到目标的网络中。 一旦进入到网络,攻击者只需要简单执行网络扫描去寻找其它不安全 …
流行消息应用 Telegram 周三报告它遭到了大规模 DDoS 攻击,导致部分地区用户出现连接问题。 官方报告称访问问题持续了大约一个小时,而 Downdetector 上的用户报告访问问题持续了两个多个小时。官方 Twitt …
在Mac下就会发现之前windows下用的很开心的sublime text 3显示内容时出现了乱码,这可怎么办? 其实我们到github上搜索下就晓得了,安装下列两个插件就能搞定啦: 1、ConvertToUTF8:https://github.com/se …
拿起手机扫一扫即可带走我!