Laravel は、シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web Framework) です。ヌードルのような乱雑なコードから解放され、完璧なネットワーク APP を構築するのに役立ち、コードの各行が簡潔で表現力豊かになります。
SSO を正しく理解しているかどうかわかりませんが、私のロジックを簡単に説明します。
3 つのサイトがあるとします a.baidu.com b.baidu.com c.baidu.com
a.baidu.com 認証済みユーザーとしてアカウントにログインします。
b と c はクライアント (サブシステム) として機能します。
b と c は、ログインする必要があるときに a にジャンプし、ログイン後にジャンプするリンクを示すパラメーター ソースを運びます。
サイトは通常のログイン方法(ユーザーパスワードの検証)であり、検証が成功した後にいくつかの処理が行われます。チケットは生成する必要がありますが、安全である限り、生成方法は関係ありません。次に、それをキャッシュに保存します。こちらでご質問がございましたら、後ほどまとめさせていただきます。ログインに成功したら、(url.
) に直接ジャンプします。 リーリーステーション a がチケット (b.baidu.com?ticket=xxxxxxxxxxxxxxxx```) を持ってステーション b にジャンプするとします
ステーション b はグローバル フィルターを作成し、チケットを受け入れ、次にステーション a にチケットが a によって生成されたかどうかを確認するよう要求します。
B サイト フィルター AppHttpMiddlewareCasAuthenticate コード。ここでチケットがあるかどうかを判断し、検証のためにサイト a にリクエストを送信します。ログインしている場合は、ユーザーUIDを取得してログインします。
ロジックは完成しましたが、いくつか質問があります。
1. 自分の実装が正しいかどうかはわかりません。
2. サイト b がサイト c にジャンプすると、サイト b の方がアクティブでセッションが常に存在し、サイト a のキャッシュ時間が切れている可能性が高いため、この時点でサイト b からサイト c にジャンプします。ステーションはログインを確認するためにステーション a にジャンプしますが、失敗したことが判明し、まだログインする必要があります。したがって、これは問題です。私たちのビジネスモジュールは相関性が低く、自由にジャンプしないため、当面はこの問題を考慮しません。しかし、これは私にとって間違いなく問題です。はっきりとは考えていませんでした。
SSOシングルサインオン(Laravelフレームワーク)のPHP実装方法について、編集者がここまで紹介しますので、お役に立てれば幸いです!