单点登录之 UCenter 介绍

老牛浏览 604评论 0发表于

1. UCenter 简介

UCenter 的中文意思就是「用户中心」,其中 U 代表 User 也代表 You,取其中的含义就是「用户中心」,或者说「你(最终用户)的中心」。UCenter 是 Comsenz 旗下各个产品之间信息直接传递的一个桥梁,通过 UCenter 站长可以无缝整合 Comsenz 系列产品,甚至其它更多的第三方应用程序,实现用户的一站式登录,个人信息、积分等的统一管理。

2. UCenter 的结构

UCenter 分为服务端和客户端 2 个部分。服务端的目录为 upload/,客户端目录为 client/。无论你的网站有多少个应用程序,服务端在一个网站中只需安装一次。而客户端则必须存在于每一个应用的根目录中。

UCenter 分为 MySQL 和远程两种接口连接方式,MySQL 方式是直接连接数据库,因此速度较快,但当 UCenter 的服务端和客户端不在同一个主机中且没有远程 MySQL 账号的情况下,则只能使用远程连接方式。使用 UCenter 接口函数前需要根据需求定义以下相关常量:

常量

说明

UC_CONNECT

连接 UCenter 的方式:mysql - MySQL方式,空 - 远程方式

UC_DBHOST

UCenter 数据库主机

UC_DBUSER

UCenter 数据库用户名

UC_DBPW

UCenter 数据库密码

UC_DBNAME

UCenter 数据库名称

UC_DBCHARSET

UCenter 数据库字符集

UC_DBTABLEPRE

UCenter 数据库前缀表

UC_DBCONNECT

UCenter 数据库持久连接:0 - 关闭,1- 打开

UC_KEY

与 UCenter 的通信密钥,要与 UCenter 保持一致

UC_API

UCenter 服务端的 URL 地址

UC_IP

UCenter 的 IP,当 UC_CONNECT 为非 mysql 方式时,并且当前应用服务器域名解析有问题时,请设置此值

UC_CHARSET

UCenter 的字符集

UC_APPID

当前应用的 ID

使用 UCenter 接口函数库必须包含 uc_client/client.php 接口函数库文件,例如下面检查新短消息的代码:

php
include './uc_client/client.php';
$newpm = uc_pm_checknew($example_uid);

3. UCenter 单点登录

UCenter 使用设置 Cookie 的方式来同步登录和退出。

3.1 同步登录

php
//通过接口判断登录账号的正确性,返回值为数组
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);

if (uid > 0) {
    //生成同步登录的代码
    $ucsynlogin = uc_user_synlogin($uid);
    echo $ucsynlogin;//其实就是访问 UCenter 客户端接口,生成指定应用下的 Cookie。
}

3.2 同步退出

php
//生成同步退出的代码
$ucsynlogout = uc_user_synlogout();
echo $ucsynlogout;

4. Discuz!X 同步登录退出

  1. UCenter 中添加应用后在后台更新 Diszcuz 应用缓存

  2. 设置 cookiepath 为 / (即整个domain)

  3. 修改 uc_client,将 count($_CACHE['app']) > 11 修改为 0

点赞
收藏
暂无评论,快来发表评论吧~
私信
老牛@ilaoniu
老牛,俗称哞哞。单纯的九零后理工小青年。喜欢折腾,爱玩,爱音乐,爱游戏,爱电影,爱旅游...
最后活跃于