Le problème ne vient pas du cache d’objets WordPress, car à ma connaissance, il n’est pas persistant entre les requêtes. Le problème survient avec les sites qui ont une forme de cache persistant : https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-caching. Cela peut être configuré via un plugin, mais il est également activé par défaut par certains fournisseurs d’hébergement, par exemple WP Engine. Je pense que dans le cas de WP Engine, ils n’activent pas le cache d’objets sur leur page de connexion, mais ils l’activent pour les utilisateurs anonymes sur toutes les autres pages. Donc, sur WP Engine, le problème n’est déclenché que si le lien “se connecter avec Discourse” est ajouté à une page autre que la page de connexion.
Le problème avec discourse_sso_url est que lorsqu’il est toujours défini sur la même valeur, pour les sites qui ont un cache persistant activé, il renverra toujours le même nonce. Définir sa valeur discourse_sso sur une chaîne aléatoire, au lieu de sa valeur par défaut de 1, casse le cache. Du moins, cela a toujours fonctionné ainsi lorsque je l’ai testé précédemment. Je n’ai pas la configuration nécessaire pour le tester actuellement.
Modification : il y a quelques détails supplémentaires sur le problème ici : Discourse (as provider) + WP SSO nonce error - #14 by simon. Cela fait un bon moment que je n’ai pas examiné cela. La solution au problème à l’époque semblait être à la fois d’ajouter une chaîne aléatoire à discourse_sso_url et de s’assurer que la mise en cache de la page n’était pas activée sur la page où le lien de connexion était affiché (sinon, la chaîne aléatoire ne serait pas unique pour chaque visite d’un utilisateur anonyme.)