客戶端模式3.業務邏輯(授權碼模式)
使用者第一次進入客戶端首頁,先驗證是否登入,如果沒有登入則跳轉至服務端授權登入
if(!$user){
return (new SSoController())->index($request);
}
...
進入index()
方法,檢查有沒有code
,沒有code
的話,則構建authorize請求,去獲取code
,這時,認證服務中心判斷使用者是否登入,沒登入,登入使用者認證服務中心的賬號密碼,登入成功之後,返回一個臨時code$url = "$this->authorize_url?client_id=$this->client_id&redirect_uri=$this->callback&response_type=code";
header('Location: '.$url);
exit;
請求之後,授權伺服器會重定向到我們$url
裡面的redirect_uri
這裡地址並帶上我們code
,這個地址也就是我們的應用入口地址,這時重複上面步驟,有code
之後,則構建認證請求$url = "$this->access_token_url?client_id=$this->client_id&client_secret=$this->client_secret&redirect_uri=$this->callback&code=$code&grant_type=authorization_code";
$result = $this->curl_get_https($url);
認證服務中心返回該使用者的token,我們拿到token,去資源服務中心獲取使用者資訊,拿到使用者資訊比對本地使用者資料,符合期望讓他本地登入成功。