web-dev-qa-db-ja.com

2つのインストール間でログイン/ログアウトセッションを共有しますか?

2つのインストール間でユーザーセッションを共有する際に問題がいくつかあります。

(a) http://stolenmx.com (b) http://arcade.stolenmx.com のサイト

Aと同じデータベースにBをインストールし、userとuser_metaテーブルを定義したので、ユーザーデータやユーザーなどを共有していますが、セッションをブリッジすることはできません。

私はいくつかの異なる方法でクッキーを使用しようとしましたが、何もうまくいきません。

現時点では(b)wp-configで使用しているもので、効果はありません。

define('COOKIE_DOMAIN', 'www.stolenmx.com');
define('COOKIEPATH', '/');     

誰もがこれを機能させる方法を知っていますか?

私は登録とログインを管理するためにサイト(a)でUserProを実際に使っています、そして私は無効にされたwp-login.phpを持っています。 UserProがCookieを他の場所に保存している、または単に使用していないためにCookieが機能していないのはこのためですか。

1
Crafty Mc

また、両方のサイトに対応するCOOKIEHASHを定義する必要があります - ランダムな32ビット文字列でうまくいきます。

デフォルトでは、COOKIEHASHはサイトURLのMD5ハッシュであり、すべての認証関連Cookieのデフォルト名を生成するために使用されます。そのため、現時点で、クロスドメインログインが機能していないのはなぜですか(COOKIEHASHは各サイトで異なるため、Cookieの名前は一致しません)。

詳しくは wp_cookie_constants() を参照してください。

要約すると、両方のサイトのwp-config.phpは次のようになります。

define( 'COOKIE_DOMAIN', '.stolenmx.com' ); // Dot prefix
define( 'COOKIEPATH',    '/' );
define( 'COOKIEHASH',    md5( 'stolenmx.com' ) );

define( 'CUSTOM_USER_TABLE',      'wp_users' );
define( 'CUSTOM_USER_META_TABLE', 'wp_usermeta' );
4
TheDeadMedic

TheDeadMedicの答えに加えて、両方のサイトはwp-config.phpファイルで同じキーとソルトを共有しなければなりません(私は文字列を4つのゼロに置き換えました):

define('AUTH_KEY',         '0000');
define('SECURE_AUTH_KEY',  '0000');
define('LOGGED_IN_KEY',    '0000');
define('NONCE_KEY',        '0000');
define('AUTH_SALT',        '0000');
define('SECURE_AUTH_SALT', '0000');
define('LOGGED_IN_SALT',   '0000');
define('NONCE_SALT',       '0000');

私はこれについての詳細を記したブログ記事を作成しました: https://www.tekfused.com/wordpress/sharing-login-cookies-among-wordpress-installs/

1
TEKFused