为何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接口的时候就会容易很多。

相关推荐:
1.bloginfo() 顾名思义,该函数主要用来显示博客信息;而且根据参数的不同,可以用来显示博客信息中的不同部分。常用的有以下几种: bloginfo(’name’) 显示博客题名,如“本站”;默认(不写参数)输出该项; bloginfo …
很多人向我咨询关于重装系统对电脑的负面影响,现在我很负责的告诉你,偶尔的重装系统是没有明显的影响的,但是频繁的重装系统那就会导致硬盘长时间高速、过热运行,会导致硬盘寿命缩短以及出现许多未知事件。 所以 …
Android4.1之前的版本中,sdcard跟路径通过“/sdcard”或者“/mnt/sdcard”来表示,而在Jelly Bean系统中修改为了“/storage/sdcard0”,以后可能还会有多个sdcard的情况。目前为了保持和之前代码的兼容,不要硬编码“/sdca …
IBM® Security AppScan® 是一个适合安全专家的 Web 应用程序和 Web 服务渗透测试解决方案。 关键收益: 通过使用内置的 Scan Configuration Wizard 快速入门。获得 Web 应用程序和 Web 服务的全面的安全性评估。通过 …
在AndroidMainifest.xml中增加允许使用网络选项(在</application>结束标签之后>): <uses-permission android:name="android.permission.INTERNET" /> …
拿起手机扫一扫即可带走我!