在用戶首次登錄時(shí),服務(wù)器會生成一個(gè)包含用戶ID和票據(jù)信息的Token,并將其發(fā)送給客戶端瀏覽器??蛻舳藶g覽器將該Token保存在本地(如Cookie或本地存儲)。當(dāng)用戶嘗試訪問其他已加入單點(diǎn)登錄系統(tǒng)的網(wǎng)站時(shí),這些網(wǎng)站會向服務(wù)器請求驗(yàn)證。服務(wù)器會根據(jù)請求中的Token信息查詢數(shù)據(jù)庫,確認(rèn)用戶身份后返回成功的響應(yīng)。如果用戶未登錄或者Token已過期,則需要重新登錄以獲取新的Token。
示例代碼:
// 用戶登錄成功后,生成并返回包含Token信息的JSON數(shù)據(jù)
header('Content-Type: application/json');
echo json_encode(['status' => 'success', 'token' => $token]);客戶端JavaScript代碼:
// 從服務(wù)器獲取Token并保存到本地(如Cookie或本地存儲)
$.get('/login', function(data) {
if (data.status === 'success') {
localStorage.setItem('sso_token', data.token);
} else {
alert('登錄失敗');
}
});三、總結(jié)
本文介紹了PHP實(shí)現(xiàn)單點(diǎn)登錄的原理與實(shí)現(xiàn)方式,包括基于Cookie和基于Token兩種方法。開發(fā)者可以根據(jù)實(shí)際需求選擇合適的方式來實(shí)現(xiàn)單點(diǎn)登錄功能,提高用戶體驗(yàn)和安全性。