これを手動で行う場合、いくつかの問題に直面する必要があります。まず第一に、優れたコンポーネントがあります。JFusionは優れたサポートを提供しますが、2 つの joomla サイト間の双方向セッションが可能かどうかはわかりません。それをチェックしてください。数日ではないにしても、何時間も節約できます!
ユーザー
別の joomla サイトで誰かを認証するには、サイト A とサイト B の両方の #__users テーブルに同じデータベース レコードが必要であり、同じセッション Cookie に加えて同じ ID とユーザー名が必要です。
これを解決するいくつかの方法:
- #_ users のエントリと # _user_usergroup_map をサイト A から B に、またはその逆に同期するユーザープラグインを作成します。これは、登録後のデータの作成、削除後のレコードの削除、および更新を処理する必要があります。
- MySQL レプリケーション (マスター <-> マスター) を使用して、サイト A とサイト B の間で #_ユーザーと # _user_usergroup_map テーブルを同期し、その逆も同様です
セッションの共有
2 つの Joomla Web サイト間で有効なセッションを共有するには、同じセッション Cookie と #__sessions テーブルにアクセスする必要があります。
そうでない場合、これはあなたが直面しなければならない最大の問題です。それを解決するいくつかの方法:
- curl を使用してサイト B のログイン フォームを取得する
- 正規表現を使用してトークンを取得します
- サイト B のログイン タスクを使用してコンポーネント ユーザーに POST 要求を送信する
もう1つは次のとおりです。
- #__users テーブルが両側で同じであると仮定します
- サイト A で認証が成功した後、サイト B のテーブル #__sessions に同じセッション レコードを作成します。
別の、そして最良の解決策:
- MySQL レプリケーション (マスター <-> マスター) を使用して、両方のサイト間で #__sessions テーブルを複製します
セッションの有効期限
共有セッションを実装する場合でも、この問題に直面する必要がある場合があります。サイト A と B のセッションの有効期限は異なります。つまり、サイト A にログインすると、サイト B のセッションが期限切れになる可能性があるため、サイト B にアクセスしてもログインされません。
次の方法で解決できます。
- 両方のサイトの Joomla バックエンドで同じ「セッションの有効期限が切れる」設定を設定します。
- 両方のサイトで MySQL レプリケーションまたはユーザープラグインを使用して #__users テーブルをレプリケートします。
これを実現するには多くの作業が必要ですが、手動で行うことにした場合でも、いくつかの拡張機能をチェックして、それらがどのように機能するかを確認してください。幸運を
編集:この拡張機能もチェックすることをお勧めします: