首先讲解 UCenter 的基本概念。
大家不要插话,我开始了啊。呵呵
uc 是 comsnez 公司退出的一个用户整合方案
包括 server、client 两个端。
server 端负责接受 client 端发起的请求,并给出相应的处理。
client 端是 封装了一些 server 提供的接口的函数。通过这些函数来调用 server 提供的接口。
具体 client 封装了那些接口,以及接口的使用方法,大家可以参考 uc 下载包里的 readme,
有详细的解释。
client 端和 server 的通信全部通过这些 client.php 封装的函数来完成。
以上内容大家有不明白的吗?下面是提问时间。
这只是基础的一个概念,估计大家都能明白。
一般整合 uc 的时候都需要 client.php 和 uc.php 这两个东西。client.php 上面说过了。是主动
想 server 端发起请求的接口封装函数。
那么 uc.php 刚好相反,这里 uc.php 他是最为一个 server 的,他接受 uc_server 发起的请求
和用户浏览器直接发起的请求。
这样对于整合 uc 来说就实现了 server 和 client 双向通信。而不是单一的 client 发起,server
接受。
那么 uc.php 在什么情况下会被请求到,或者说他主要负责处理什么事情呢?
打开打开 dz6.1 以及以上的版本的 uc.php(api/uc.php)可以看到下面有很多处理方法。逐
一看一下就明白了。我大概讲一下。
uc.php 会接受 uc_server 发给他的通知。这些通知大概有用户改名、用户改密码、用户被删
除、还有一些其他的。
另外一个最重要的是 uc.php 会接收用户浏览器发起的同步登录、退出请求。
uc.php 在接收到这个请求的时候会把当前浏览器设置为登录或者退出状态。这就是同步登录
和退出最重要的一个环节。
那么浏览器是在什么情况下会发起这个同步登录的请求呢?
打开 uc 的 readme 文档。我么可以找到一个同步登录的接口。这个接口会在用户登录的时
候,帐号密码验证成功以后被调用。
重点来了:调用这个接口并不能理解就实现其他应用的同步登录。一定要明白这一点。web
上的应用登录状态是相对浏览器来说的。服务器端的请求是无法让浏览器处于登录状态的。
这个时候请求同步登录接口得到的返回是一些 javascript 请求的串。
类 似 于 这 样 的
程序在得到这些字符串的时候要把他们输出到当前用户的浏览器上。这些 html 代码被输出
到用户浏览器上浏览器会发起请求,到 src 的地址。
这个地址就是我上面说的 uc.php 的地址。
比如你的 uc 下有 A、B 两个应用。那么在 A 登陆的时候。A 在判断用户身份合法的时候,就
会去调用 uc 的同步登录接口从而得到一个同步登录串,记住了。这个时候得到的这个同步
登录串是 B 应用的。
此时 A 需要先把当前用户设置为已经登录状态。之后输出那段 B 的同步登录 js 串。
用户的浏览器就会向 B 发起同步登录请求。
B 的 uc.php 接收到这个请求后同样会把当前用户浏览器在 B 应用下设置为一登录状态。这
样就实现了用户在 A 登录,在 B 也同时处于了登录状态。
同理如果还有 C、D……等应用也是一样的原理。只是 A 在调用同步登录接口的时候就不是
仅仅是得到 B 的同步登录串,他会同时得到 B、C、D……的登录串。
这些 js 串在浏览器上逐个被执行了。其他的应用也就都登陆上去了。
同步退出和这个基本上是完全一样的原理,只是调用的同步退出的接口。
uc.php 那里相应的也到了处理退出的代码。
uc 的整合原理上面基本上就完全讲完了。
大家可以提问了。
仅仅对原理不明白的。
原理明白了,下面我会讲一个实战的例子。
不可能被伪造,是很强的加密方式加密过的。
京-PHP-赵雄飞(13740080)
如果能伪造,那么可以去伪造更有价值的东西了。
京-PHP-赵雄飞(13740080)
蜘蛛(85466188)
是用 ajax 分开逐个应用分别单独执行的?
10:23:30
10:23:52
10:22:42
10:24:07
10:24:06
不是。得到的是 html 代码,直接输出到浏览器即可。
口明明口(328001026)
我的意思是,人家获取了那段 JS 串,以后就用这个串去登陆
晋 PHP/ASP-YinG(33098184)
要是应用多的话,浏览器访问各个应用会很慢吧
长沙-沧海一粟
伪造是可能的,没有绝对安全的系统
长沙-沧海一粟
js 串是在本地执行,怎么去获取呢?
晋 PHP/ASP-YinG(33098184)
京-PHP-赵雄飞(13740080)
蜘蛛(85466188)
是用 ajax 分开逐个应用分别单独执行的?
10:25:14
10:23:52
10:22:42
10:24:29
10:25:04
不是。得到的是 html 代码,直接输出到浏览器即可。
10:25:32
这个应该也可以用 AJAX 实现吧
柱辉
伪造情况不在讨论范围
京-PHP-赵雄飞(13740080)
口明明口(328001026)
我的意思是,人家获取了那段 JS 串,以后就用这个串去登陆
10:25:47
10:24:06
有个有效期。
京-PHP-赵雄飞(13740080)
这个应该也可以用 AJAX 实现吧
10:26:19
那你需要从 html 代码中正则出 src 的地址。
京-PHP-赵雄飞(13740080)
晋 PHP/ASP-YinG(33098184)
要是应用多的话,浏览器访问各个应用会很慢吧
10:26:42
10:24:07
会的。
担凳仔霸头位
其实他的意思是 同步登陆的接口生成一个 uc.php 地址,然后用 JS 调用这
个 uc.php 地址 ,就等于调用了 uc.php 文件。然后 uc.php 的文件处理这个
登陆串
10:26:51
10:27:17
10:27:11
京-PHP-赵雄飞(13740080)
毕竟是一次请求。但是就像你的页面输出 3 个图片和 5 个图片的区别一样。只要
你服务器没挂掉,其实是很快的。
粤-JSP-lucene(7290204)
多个应用同步登陆的时候是按照在 uc 里面添加应用的顺序来定的吗,也就是按
照应用 id 的吗?
京-PHP-赵雄飞(13740080)
有挂掉的会比较卡。
京-PHP-赵雄飞(13740080)
担凳仔霸头位
其实他的意思是 同步登陆的接口生成一个 uc.php 地址,然后用 JS 调用这
个 uc.php 地址 ,就等于调用了 uc.php 文件。然后 uc.php 的文件处理这个
登陆串
10:27:18
10:27:34
10:26:51
总结的很到位。
京-PHP-赵雄飞(13740080)
粤-JSP-lucene(7290204)
多个应用同步登陆的时候是按照在 uc 里面添加应用的顺序来定的吗,也就是按
照应用 id 的吗?
10:27:17
10:27:57
按照 uc 后台的顺序。
新人京-PHP-雪灭报到啦,大家快来迎接吧! 10:28:45
10:28:52
初来乍到,快跟大家介绍介绍自己吧:)我的兴趣爱好:我喜欢的音乐:我推荐的
电影:我的交友宣言:[图片](请...
我要欢迎 | 送鲜花/笑脸
晋 PHP/ASP-YinG(33098184)
其实就是用户使用 GET 方式挨个登录各个应用,只是用户看不到这个过程
蜘蛛(85466188)
每个应用一次请求?
柱辉
嗯
京-PHP-赵雄飞(13740080)
晋 PHP/ASP-YinG(33098184)
其实就是用户使用 GET 方式挨个登录各个应用,只是用户看不到这个过程
10:29:16
10:29:19
10:29:29
10:28:52
10:29:46
总结的很到位。
口明明口(328001026)
ucenter 那个邮件推送功能,有可能实现吗
京-PHP-赵雄飞(13740080)
给大家十分钟时间自由讨论。10 分钟后我来讲实战。
京-PHP-赵雄飞(13740080)
那就更简单了。
京-PHP-赵雄飞(13740080)
口明明口(328001026)
10:30:01
10:30:07
10:30:15
10:29:46
ucenter 那个邮件推送功能,有可能实现吗
10:30:56
10:30:28
10:30:23
有。
京-PHP-赵雄飞(13740080)
但是目前还没见谁用这个东西。
柱辉
当前应用状态改变后,JS 挨个通知其他应用
口明明口(328001026)
ucenter 那邮件功能,我以调用,Ucenter 就挂掉了,变的很慢慢,几乎打不开
柱辉
执行相应的操作
让我想想(375110054)
开始实践吧
口明明口(328001026)
必须到数据库清除那邮件推送队列表,才能正常
京-PHP-赵雄飞(13740080)
口明明口(328001026)
ucenter 那邮件功能,我以调用,Ucenter 就挂掉了,变的很慢慢,几乎打不开
10:30:56
10:32:03
10:30:55
10:31:15
10:31:36
10:32:26
那就是 ucenter 邮件配置的不正确。导致发邮件巨慢导致的。
京-PHP-赵雄飞(13740080)
发邮件又是计划任务的方式被触发的所以会导致 uc 的接口都巨慢。
柱辉
ucenter 那邮件功能 是要 JS 促发的吧~~~
京-PHP-赵雄飞(13740080)
柱辉
当前应用状态改变后,JS 挨个通知其他应用
10:32:35
10:32:58
10:30:28
这个是 uc_server 端在服务器端直接发起请求给 uc.php 的。
京-PHP-赵雄飞(13740080)
柱辉
ucenter 那邮件功能 是要 JS 促发的吧~~~
10:33:22
10:32:35
不是,每次请求 uc_server 的时候触发。
担凳仔霸头位
过程应该 是 应用程序->uc_client->uc_server->uc.php
10:33:49
柱辉
10:34:13
京-PHP-赵雄飞(13740080)
过程应该 是 应用程序->uc_client->uc_server->uc.php
10:34:36
10:36:32
10:37:01
10:37:51
10:39:05
10:36:11
uc 的通知是这个流程。
京-PHP-赵雄飞(13740080)
下面开始讲具体我们拿到一个应用要如何整合到 ucenter 上,具体操作的步骤是
哪些。
京-PHP-赵雄飞(13740080)
我们先以 php 语言为例。
京-PHP-赵雄飞(13740080)
一、首先我们要到 uc 的后台去添加一个应用。自定义方式的添加。
京-PHP-赵雄飞(13740080)
添加完了之后我们就会可以在应用列表看到这个应用。但此时是通信失败的。因
为压根就没有这个东西。只是让他先在 uc 的应用数据表中产生一条记录。
京-PHP-赵雄飞(13740080)
这个时候,我们点击该应用的编辑。进去后在页尾可以看到一个文本框给出了这
个一段 PHP 代码。
京-PHP-赵雄飞(13740080)
copy 这个代码,把他保存到你的应用的目录下。
比如 dzx 把这个放在了./config/config_ucenter.php
京-PHP-赵雄飞(13740080)
当然你可以放在任何一个目录,任何一个文件名称,这个都是没有强制约束的。
根据你自己的结构来看。
京-PHP-赵雄飞(13740080)
这个配置文件里包含了一些重要的信息,比如该应用在 uc 给分配的 id、密钥等
等。
京-PHP-赵雄飞(13740080)
到此为止,第一步重要的工作我们已经完成了。
北京-潘立光(516487837)
10:39:37
10:40:06
10:40:29
10:41:50
10:38:25
我把网上的 dzx 和数据库下到本地以后 就是登录不了是 是不是和 uc 的
10:42:06
配置有关系
北京-PHP.NET(328150280)
不要插嘴
京-PHP-赵雄飞(13740080)
二、到 comsenz 下载 uc 的安装包,在里面找到 uc_client 这个包。copy 到你的
程序根目录下(也可以是其他目录,一般在根目录即可,方便升级)。
京-PHP-赵雄飞(13740080)
重要的第二步也完成了。是不是很简单呐。呵呵
柱辉
10:42:10
10:42:50
10:43:13
是的~
成都-耗子[Phper]
10:43:20
京-PHP-赵雄飞(13740080)
三、我们需要着手修改之前程序的登录、注册、这些和用户基础数据相关的流程。
京-PHP-赵雄飞(13740080)
10:43:31
10:43:55
10:45:25
10:45:53
10:46:29
10:44:03
10:44:56
10:47:52
10:47:07
首先来处理登录。
京-PHP-赵雄飞(13740080)
找到你原本系统中处理登录的代码。
京-PHP-赵雄飞(13740080)
一般的程序登录处理流程大概是这样的。
显示登录表单,用户填写表单,程序接受到用户帐号密码到本地数据库验证,成
功则登录成功,反之则提示失败。
京-PHP-赵雄飞(13740080)
我们整合到 uc,因为是 uc 统一管理用户的基础信息了。所以不能再到本地数据
库去验证用户帐号密码是否正确了。
京-PHP-赵雄飞(13740080)
那么我们需要修改的就是把之前到本地验证帐号密码的代码改成调用 uc 的用户
登录接口接口。
京-PHP-赵雄飞(13740080)
需要注意的是我们在调用这个 uc 的接口之前要先引入 uc 的配置文件和
uc_cient/client.php 文件。
京-PHP-赵雄飞(13740080)
引入 uc 的配置文件是因为这里记录着很多重要的 KEY,引入 client.php 是有了
调用 uc_server 接口的函数了。
京-PHP-赵雄飞(13740080)
回到刚才,调用 uc 用户登录接口在引入 client.php 后变得很简单,就是一个函
数,去执行函数即可。
京-PHP-赵雄飞(13740080)
结合 uc 的文档 readme 你就知道如何处理这个函数的返回值了。
京-PHP-赵雄飞(13740080)
登录成功后,你记得需要调用一下同步登录的接口。
京-PHP-赵雄飞(13740080)
也是一个函数而已。
京-PHP-赵雄飞(13740080)
所以不要把接口想象的多复杂。在这里接口仅仅是个函数而已。内部如何实现你
压根不需要关心。在你看来他就是一个简单的函数而已。
京-PHP-赵雄飞(13740080)
执行了同步登录的接口,记得要把函数返回值输出到用户浏览器上。具体怎么输
出你不要问我了。
京-PHP-赵雄飞(13740080)
到这里你的应用已经可以用 uc 的用户来登录了。整合 uc 已经完成了最重要的环
节。并且你也熟悉了 uc 的接口要如何调用了。
京-PHP-赵雄飞(13740080)
你可以跟老板说,明天就和整合完 uc 了。其实你再用一个小时就能弄完。明天
你可以去聊天泡 mm 了。哈哈
京-PHP-赵雄飞(13740080)
接下来我们处理用户注册的代码。
京-PHP-赵雄飞(13740080)
同样找到原本系统中处理注册的代码。
10:48:09
10:48:24
10:48:28
10:49:04
10:51:21
10:51:35
10:49:36
10:50:27
10:51:08