Laravel は、シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web フレームワーク) です。ヌードルのような乱雑なコードから解放され、完璧なネットワーク APP を構築するのに役立ち、コードの各行が簡潔で表現力豊かになります。
SSO を正しく理解しているかどうかわかりませんが、私のロジックを簡単に説明させてください。
3 つのサイト a.baidu.com b.baidu.com c.baidu.com
a.baidu.com が認証済みユーザーとしてアカウントにログインしているとします。
b と c はクライアント (サブシステム) として機能します。
b と c は、ログインする必要があるときに a にジャンプし、ログイン後にジャンプするリンクを示すパラメーター ソースを運びます。
a当サイトは通常のログイン方法(ユーザーパスワード認証)となっており、認証成功後に一部の処理が行われます。チケットは生成する必要がありますが、安全である限り、生成方法は関係ありません。次に、それをキャッシュに保存します。こちらでご質問がございましたら、後ほどまとめさせていただきます。ログインに成功したら、(url にジャンプします。
``` php private function getTicketUrl(\)source) { \(ticket = md5(time()+key); Cache::put(\)ticket, $user, 120); $url = $source . '?ticket=' . $ticket; return $url; }
ステーション a がチケット (b.baidu.com?ticket=xxxxxxxxxxxxxxxx```) を持ってステーション b にジャンプするとします。
ステーション b はグローバル画像フィルターを作成します。これを受け入れます
B ステーション フィルター AppHttpMiddlewareCasAuthenticate コードで、チケットがあるかどうかを判断し、ログインしている場合は、チケットを取得します。 . ユーザー UID にログインします。
rreee ロジックは完成しましたが、私の実装が正しいかどうかはわかりません
2。サイト b がサイト c にジャンプすると、サイト b の方がアクティブでセッションが常に存在し、サイト a のキャッシュ時間が終了している可能性が高いため、サイト b からサイト c にジャンプします。ログインを決定するためにサイト a にアクセスしましたが、失敗したことが判明したため、引き続きログインする必要があります。ビジネス モジュールは相関性が低く、任意にジャンプしないため、当面はこの問題を考慮しません。これは私にとっては確かによく考えていない質問です
SSO シングル サインオン (Laravel フレームワーク) の実装方法を紹介します