2

CMS - Joomla! 2.5
タスク- www.domain.com(A) にログインすると、自動的に test.domain.com(B) にログインする必要があり、その逆も同様です。
実装
サイト A にアクセスすると、セッション ID を持つようにセッション Cookie が設定されます。サイト A にログインすると、ユーザー資格情報がチェックされ、j25_session テーブルのセッション レコードがユーザー ID で更新されます。これが完了すると、セッション ID がセッション Cookie にあるため、サイト A を自由にナビゲートできます。Cookie に保存されている Cookie ID とセッション ID は、サイト B で同じです。これは、両方の Web サイトで Cookie ドメインを .domain.com に設定し、構成ファイルで同じシークレット値を使用しているためです。また、テーブルが共有されている (作成されたビュー) ため、サイト B はサイト A のセッション データにアクセスできます。したがって、理想的には、サイト A から B に移動しても、セッションが有効であり、ログインしている必要があります。
問題
サイト A から B に移動すると、セッションが無効になります。調査した限りでは、これはログイン フォームにあるトークンが原因です。フォーム内のトークンとセッションに保存されたトークンが異なると、セッションが終了します。

何かご意見は ?

4

1 に答える 1

1

これを手動で行う場合、いくつかの問題に直面する必要があります。まず第一に、優れたコンポーネントがあります。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 テーブルをレプリケートします。

これを実現するには多くの作業が必要ですが、手動で行うことにした場合でも、いくつかの拡張機能をチェックして、それらがどのように機能するかを確認してください。幸運を

編集:この拡張機能もチェックすることをお勧めします:

于 2013-07-13T10:11:36.220 に答える