一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 單點登錄 Ucenter示例分析

單點登錄 Ucenter示例分析

2020-05-25 12:28PHP教程網 PHP教程

正如標題所言,需要了解下Ucenter登錄步驟,之后在進行有效的分析,下面有個不錯的示例,感興趣的朋友可以參考下

首先我們先來了解下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接口的時候就會容易很多。

大致步驟 首先我們要先安裝 ucenter 然后把uc_client 這個文件夾復制到自己的項目里面去 然后呢在配置幾個文件

client.php相當于函數庫

uc.php相當于回調文件

還有一個 config.inc.php 是配置文件

當你有2個應用都設置了同步登陸之后 當你登陸一個應用 然后執行

復制代碼 代碼如下:


include './config.inc.php';
include './uc_client/client.php';
$usernames="feiye";
$passwords="789123";
list($uid, $username, $password, $email) = uc_user_login($usernames, $passwords);
if($uid > 0) {
setcookie("username",$username,time()+intval(24*3600));
echo uc_user_synlogin($uid);
echo '登錄成功';
} elseif($uid == -1) {
echo '用戶不存在,或者被刪除';
} elseif($uid == -2) {
echo '密碼錯';
} else {
echo '未定義';
}


uc_user_synlogin() 這個函數 代表著 要同步登陸到其他所有開啟同步登陸的函數 uc自己會在后臺把所有開啟同步登陸的應用都給循環遍歷一遍 然后 在頁面上輸出

復制代碼 代碼如下:


<script type="text/javascript" src="http://127.0.0.70/api/uc.php?time=1374540644&code=14fdIufn%2B2YwkQlN9P07FEHOfZvDJupvgBgaRPn7R0DJmbEwCb23vKwO1uaeybLq3HZhtokoZrnqu7NGi09jzs684drFCbLDiSpKhk6P50MftBRA3vp4yIswhrPMl1dXo5ajB7CVZ9F8EI%2BkdFfq0E0rdyeRkuz8goeHhg" reload="1"></script>

 

復制代碼 代碼如下:


<script type="text/javascript" src="http://127.0.0.71/api/uc.php?time=1374540644&code=07a91g8SepQwwfA3C1uN1sPhC4v6yuER1jFbVTQMK%2BQZmTkjwOz8X%2B8rWgNmKdhlXe9XXVQqAkDjN26CK6BMA19ZpLoiSW4wuNnxHAB9xXLt2VExuyf03MnEHAC%2BUdjwb58sbXGcYUpM4Bmzdm3Q92ObSp0Kk2qCd12fqg" reload="1"></script>


類似這種的js代碼 就是發送給每個開啟同步登陸的應用 然后 每個開啟同步登陸的應用 的 回調文件 uc.php 接受到后 會進行解密 解密好后 其實 你就可以自己來寫代碼了 這個uc.php回調文件的代碼不一定非要按照他們的格式來寫 你也可以自己寫你自己的代碼 比如說我就是根據session來做同步登陸的

復制代碼 代碼如下:


function synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('gwyy',$username,time()+3600,'/','127.0.0.71');
_setcookie('Example_auth', _authcode($uid."\t".$username, 'ENCODE'));

$_SESSION['username'] = $username;
$_SESSION['uid'] = $uid;
}

function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
//note 同步登出 API 接口
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('Example_auth', '', -86400 * 365);
unset($_SESSION['username']);
unset($_SESSION['uid']);
session_destroy();
}


這樣 當用戶刷新了別的應用頁面之后 就自動登陸了

注意 如果在UC里面添加應用 提示通信沒有成功 那么原因很簡單 就是沒有找到你 http://xxxx/api/uc.php 這個文件 只要有這個文件在 那么通信 肯定會成功的

其實UC的原理很簡單 就是某個應用登陸后 然后后臺輪詢發送給同步登陸的應用的回調文件 回調文件接收到用戶ID之后 生成cookie或者session然后進入登陸模式。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美午夜精品 | 欧美艳星julnaann | 操大姨子逼 | 成人涩涩屋福利视频 | 成人18视频在线观看 | 性xxxx欧美高清 | 操bb| hezyo加勒比一区二区三区 | 色综合伊人色综合网站中国 | 女人把扒开给男人爽 | 奇米9999| 天天色天| 好爽好紧小雪别夹小说 | 国产精品自在欧美一区 | 亚洲国产成人在人网站天堂 | 青青青国产精品国产精品美女 | 范冰冰a级一级特级毛片 | 免费在线视频成人 | 免费网站看v片在线成人国产系列 | 免费观看一区二区 | 成年人黄色录像 | 美女隐私部位视频网站 | 国产精品久久久久不卡绿巨人 | 嫩草影院永久入口在线观看 | 五月天婷婷网亚洲综合在线 | 7788理论片在线观看 | 91看片淫黄大片.在线天堂 | 特级毛片全部免费播放器 | 国产草草视频 | 精品视频在线免费播放 | 亚洲精品久久啪啪网站成年 | 好姑娘在线观看完整版免费 | 91久久偷偷做嫩草影院免费看 | 调教扩张宫颈女人惨叫 | 嫩草精品 | 爽新片xxxxxxx | 久久这里只有精品视频e | 国产精品视频第一区二区三区 | 护士让我吃奶我扒她奶 | 色综合久久六月婷婷中文字幕 | 美女扒开屁股 |