Je pense que ce qui se passe, c’est que lorsque vous visitez une route comme https://forum.example.com/session/sso?return_path=/t/some-slug/23, Discourse vous redirige vers l’url de connexion discourse, que vous soyez connecté ou non à Discourse. Cela se produit ici :
Le site fournisseur d’SSO est alors censé gérer le cas des utilisateurs qui sont déjà connectés au site. Voici comment le plugin WP Discourse le gère :
Ce code (ce qui suit l’instruction else) gère le cas des utilisateurs qui sont déjà connectés à WordPress. Ils sont redirigés vers l’URL fournie par le paramètre de requête return_path. Ainsi, du point de vue de l’utilisateur, il est dirigé directement vers l’URL du chemin de retour, mais ce qui se passe en réalité, c’est qu’il est redirigé vers le site du fournisseur d’SSO, puis de retour vers Discourse.
Je pense que le problème sur votre site est que votre code d’SSO ne gère pas le cas des utilisateurs qui sont déjà connectés au site.
Je n’ai pas la possibilité de tester cela pour le moment. Il est possible que je lise mal le code. Avant de regarder le code, je pensais qu’une vérification était effectuée du côté de Discourse pour voir si l’utilisateur était déjà connecté à Discourse, mais il semble que ce ne soit pas ainsi que cela fonctionne.