web-dev-qa-db-fra.com

partager les sessions de connexion/déconnexion sur deux installations?

Je rencontre des problèmes lors du partage des sessions utilisateur entre deux installations.

(a) site sur http://stolenmx.com (b) site sur http://arcade.stolenmx.com

J'ai installé B dans la même base de données que A et j'ai défini les tables user et user_meta. Je partage donc les données utilisateur, les utilisateurs, etc.

J'ai essayé d'utiliser des cookies de différentes manières, mais rien ne fonctionne.

C'est ce que j'utilise dans (b) wp-config pour le moment sans effet,

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

est-ce que quelqu'un sait comment faire fonctionner cela?

J'utilise actuellement UserPro sur le site (a) pour gérer les enregistrements et la connexion, et wp-login.php est désactivé. Cela pourrait-il être la raison pour laquelle le cookie ne fonctionne pas car UserPro enregistre le cookie ailleurs ou ne l'utilise tout simplement pas?

1
Crafty Mc

Vous devez également définir une variable COOKIEHASH correspondante pour les deux sites (une chaîne aléatoire de 32 bits fera l'affaire).

Par défaut, COOKIEHASH est un hachage MD5 de l'URL du site et est utilisé pour générer les noms par défaut de tous les cookies liés à l'authentification. C'est pourquoi, pour le moment, votre connexion interdomaine ne fonctionne pas (les noms des cookies ne sont pas cohérents, car COOKIEHASH sera différent pour chaque site).

Voir wp_cookie_constants() pour plus d'informations.

Donc, pour récapituler, votre wp-config.php pour les deux sites devrait ressembler à ceci:

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

En plus de la réponse de TheDeadMedic, les deux sites doivent partager les mêmes clés et sels dans les fichiers wp-config.php (j'ai remplacé la chaîne par quatre zéros):

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');

J'ai créé un article sur ce blog qui contient plus de détails: https://www.tekfused.com/wordpress/sharing-login-cookies-among-wordpress-installs/

1
TEKFused