中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用PHP怎么實現一個SSO單點登錄功能

發布時間:2021-02-07 20:49:21 來源:億速云 閱讀:161 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關使用PHP怎么實現一個SSO單點登錄功能,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

假如三個站點 a.baidu.com b.baidu.com c.baidu.com

a.baidu.com 作為驗證用戶登錄賬戶。

b和c作為客戶端(子系統)。

b和c需要登錄的時候跳轉到a,并且攜帶參數source指明登陸后跳轉的鏈接。

a站點就是普通的登陸方式(校驗用戶密碼),校驗成功后做一些處理。需要生成一個ticket,具體怎么生成都可以,只要安全就可以了。然后存儲到Cache里面。這里有疑問,后面總結。登陸成功后直接跳轉到\(url就可以了。

 ``` php private function getTicketUrl(\)source)
{
\(ticket = md5(time()+key); Cache::put(\)ticket, $user, 120);
$url = $source . '?ticket=' . $ticket;
return $url;
}

假如說a站帶著ticket跳轉到b站(b.baidu.com?ticket=xxxxxxxxxxxxxxxx```)

b站做一個全局的過濾器,接受這個ticket然后請求a站驗證ticket是否為a生成的。

b站過濾器App\Http\Middleware\CasAuthenticate代碼,這里判斷是否有ticket并發送請求到a站校驗。如果是登陸的,則拿到用戶UID進行登陸。

public function handle($request, Closure $next)
{
$ticket = $request->input('ticket');
if ($ticket) {
$result = json_decode('http://a.baidu.com' . '/auth/check-ticket?ticket=' . $ticket), true);
if ($result['state'] == "SUCCESS") {
$request->session()->flush();
Auth::loginUsingId($result['result']['uid']);
return redirect(redirect()->getUrlGenerator()->current());
}
}
return $next($request);
}

上述就是小編為大家分享的使用PHP怎么實現一個SSO單點登錄功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澎湖县| 娄底市| 蕉岭县| 石景山区| 泰来县| 高淳县| 浦东新区| 肥城市| 抚远县| 赣榆县| 甘孜县| 杭州市| 定州市| 齐河县| 轮台县| 增城市| 繁峙县| 沙河市| 涡阳县| 永州市| 屏东县| 通许县| 隆化县| 郁南县| 五寨县| 怀安县| 宁陕县| 芒康县| 博湖县| 旬邑县| 泾阳县| 庆城县| 天峻县| 常熟市| 牟定县| 青岛市| 万全县| 宝兴县| 海伦市| 吉木乃县| 库车县|