Nous utilisons WP comme fournisseur SSO (nous gérons l’accès à Discourse et au contenu LMS avec MemberPress sur WP). L’inscription et la connexion des nouveaux utilisateurs fonctionnent parfaitement, mais je n’arrive pas à me déconnecter.
J’ai ajouté la redirection ?request=logout, mais dès que je rafraîchis la page de déconnexion, je me retrouve de nouveau connecté.
Au début, je pensais que cela pouvait être dû au fait d’avoir WP ouvert dans un autre onglet du navigateur, mais le comportement persiste même après m’être déconnecté de WP et avoir fermé l’onglet.
On a l’impression d’être très près de la solution. J’espère que quelqu’un aura le temps de partager quelques conseils de dépannage pour qu’on puisse régler ce problème une bonne fois pour toutes.
Merci.
Voici une petite GIF illustrant (2) déconnexions successives.
Il semble que tout soit correctement configuré. S’agit-il d’un site WordPress standard ou fait-il partie d’une configuration multisite ? Il pourrait y avoir un problème de synchronisation de la déconnexion avec les sites autres que le site principal du réseau.
En examinant votre enregistrement d’écran, il semble que votre site Discourse soit configuré avec login required. Ce qui se produit, c’est que Discourse vous redirige vers votre site WordPress avec une demande SSO, puis vous connecte automatiquement car vous êtes toujours connecté à WordPress. Le comportement attendu est que vous arriviez sur la page de connexion de WordPress en tant qu’utilisateur déconnecté.
La synchronisation des déconnexions avec Discourse dépend du hook WordPress clear_auth_cookie. Il est possible qu’un autre plugin sur votre site interfère avec cela.
Si vous disposez d’un site de développement, essayez de désactiver tous les plugins sauf WP Discourse et voyez si le problème persiste. Si vous n’avez pas de site de développement, vous pouvez essayer de désactiver les plugins pour la session de votre utilisateur avec le plugin Health Check. Les détails sur la façon d’utiliser ce plugin pour désactiver les plugins pour une session sont donnés ici : Troubleshooting using the Health Check – Make WordPress Support.
Boom. Je n’ai pas de site de développement, mais le plugin Health Check a parfaitement fonctionné, dès la première tentative. Il semble que je vais devoir plonger dans MemberPress et auth_cookie. Merci, Simon.
Voici les étapes que j’ai suivies, au cas où quelqu’un d’autre en aurait besoin :
Installation du plugin Health Check.
– Mise du site en mode Dépannage.
– Activation du plugin WP-Discourse.
Ouverture du site Discourse.
– Déconnexion.
– Redirection vers la page de connexion de WP (le formulaire de connexion manquait).
– Impossibilité de se reconnecter à Discourse du tout. (Fonctionnalité souhaitée.)
Activation de MemberPress.
– (J’ai réalisé que la page de connexion utilise des champs utilisateur/mot de passe générés par MemberPress.)
– Le formulaire de connexion est réapparu.
Ouverture du site Discourse, déjà connecté.
Tentative de déconnexion, redirigé en boucle vers Discourse, toujours connecté.
J’utilise WP depuis 2007 et je n’avais jamais entendu parler de ce plugin jusqu’à présent. Merci encore, Simon !
J’aimerais vérifier ce qui se passe avec MemberPress, mais c’est un plugin payant. En consultant leur documentation, il semble qu’il existe une URL de redirection de déconnexion MemberPress qui peut être définie sur la page des options du plugin. Le problème pourrait être lié à ce paramètre.
J’essaie de trouver un moyen de déconnecter Discourse depuis un site externe. J’ai cherché de la documentation et il semble que la méthode consiste à envoyer une requête API POST, comme mentionné dans ce post.
Le problème, c’est que je ne comprends pas vraiment comment faire cette requête API et je ne sais pas comment avancer. J’ai téléchargé Postman et j’essaie d’expérimenter dedans, mais je suis bloqué. Je ne suis pas sûr de savoir créer la requête API dont j’ai besoin, ni comment l’implémenter ensuite sur le site externe.
Le site est un site WordPress utilisant Memberpress et il sert de fournisseur SSO pour mon forum Discourse. Après leur déconnexion sur WordPress, je peux les rediriger vers une URL, ce que j’aimerais utiliser pour les déconnecter simultanément de Discourse. Ou peut-être puis-je envoyer une requête API via une fonction PHP que je pourrais ajouter à functions.php ?
Utilisez-vous le plugin WP Discourse pour le SSO ? Si oui, la déconnexion de WordPress devrait vous déconnecter de Discourse, mais un rapport récent indique que cela ne fonctionne pas lorsque le plugin Memberpress est utilisé sur WordPress : SSO: Unable to logout. Rencontrez-vous le même problème ?
Je rencontre des difficultés pour reproduire le problème. Si je pouvais créer un compte sur l’un de vos sites WordPress, je pourrais peut-être comprendre ce qui se passe. Je n’ai pas besoin d’accès administrateur. Si cela est possible, envoyez-moi un MP avec les détails du site.
@simon je viens de t’inscrire à l’adhésion. Tu devrais avoir reçu un e-mail pour définir un mot de passe. Dis-moi ce que tu en penses ? Merci d’avance.
@TGP Peux-tu essayer de modifier le paramètre de Discourse logout redirect en https://www.thegearheadproject.com/?request=logout ? Il semble que les requêtes sans www soient redirigées vers l’URL avec www, mais que le paramètre de requête request=logout ne soit pas conservé lors de la redirection.
Cela pourrait ne pas résoudre le problème, mais il serait bon d’exclure cette cause.
Il semble probable que les problèmes de déconnexion sur ces sites ne soient pas liés.
@robtech lorsque je me déconnecte de votre site Discourse, je suis également déconnecté de votre site WordPress, ce qui indique que cette partie du processus de déconnexion fonctionne correctement sur votre site. Le problème que je rencontre concerne la synchronisation des déconnexions de WordPress vers Discourse. Me déconnecter de votre site WordPress ne me déconnecte pas de votre site Discourse.
Pouvez-vous vérifier que la clé API et le nom d’utilisateur de publication que vous avez définis dans l’onglet Connexion WP Discourse sont corrects ? Vous devez utiliser une clé API et un nom d’utilisateur administrateur. L’option la plus simple consiste à utiliser la clé API maître de votre site et à utiliser « system » comme nom d’utilisateur de publication. Vous devriez voir un message indiquant que vous êtes « connecté à Discourse » après avoir enregistré les options sur cette page. Des identifiants administrateur sont requis dans cette section afin que les utilisateurs puissent être déconnectés de Discourse lors de la déconnexion de WordPress.
Faites-moi savoir si cela ne résout pas le problème.