Abbiamo WP come provider SSO (stiamo gestendo l’accesso a Discourse e ai contenuti LMS con MemberPress su WP). La registrazione e l’accesso dei nuovi utenti funzionano splendidamente, ma non riesco a disconnettermi.
Ho aggiunto il reindirizzamento ?request=logout, ma non appena aggiorno la pagina di disconnessione, torno subito dentro.
All’inizio pensavo che potesse essere dovuto al fatto di avere WP aperto in un’altra scheda del browser, ma il comportamento persiste anche dopo essermi disconnesso da WP e aver chiuso la scheda.
Sembra che siamo davvero vicini alla soluzione. Spero che qualcuno abbia voglia di condividere qualche consiglio per la risoluzione dei problemi così da chiudere questa questione.
Grazie.
Ecco un piccolo gif che dimostra (2) disconnessioni consecutive.
Sembra che tu abbia configurato tutto correttamente. Si tratta di un sito WordPress standard o fa parte di un’installazione multisito? Potrebbe esserci un problema nella sincronizzazione dell’logout con i siti diversi da quello principale della rete.
Dall’analisi della tua registrazione dello schermo, sembra che il tuo sito Discourse sia impostato su login richiesto. Ciò che sta accadendo è che Discourse ti reindirizza al tuo sito WordPress con una richiesta SSO e poi ti effettua automaticamente il login perché sei ancora loggato su WordPress. Il comportamento atteso è che tu venga reindirizzato alla pagina di login di WordPress come utente non loggato.
La sincronizzazione dell’logout con Discourse dipende dall’hook di WordPress clear_auth_cookie. È possibile che un altro plugin sul tuo sito stia interferendo con questa funzionalità.
Se hai un sito di sviluppo, prova a disattivare tutti i plugin tranne WP Discourse e verifica se il problema persiste. Se non disponi di un sito di sviluppo, puoi provare a disattivare i plugin per la sessione del tuo utente con il plugin Health Check. Le istruzioni su come utilizzare tale plugin per disattivare i plugin per una sessione sono disponibili qui: Troubleshooting using the Health Check – Make WordPress Support.
Boom. Non ho un sito di sviluppo, ma il plugin Health Check ha funzionato alla perfezione—già al primo tentativo. Sembra che dovrò approfondire MemberPress e l’auth_cookie. Grazie, Simon.
Ecco i passaggi che ho seguito, nel caso servissero a qualcun altro:
Ho installato il plugin Health Check.
– Ho messo il sito in modalità Troubleshooting.
– Ho abilitato il plugin WP-Discourse.
Ho aperto il sito Discourse.
– Ho effettuato il logout.
– Sono stato reindirizzato alla pagina di login di WP (il modulo di login era assente).
– Non sono riuscito a effettuare di nuovo il login su Discourse. (Funzionalità desiderata.)
Ho abilitato MemberPress
– (Ho capito che la pagina di login utilizza i campi username/password generati da MemberPress.)
– Il modulo di login è ricomparso.
Ho aperto il sito Discourse: ero già loggato.
Ho provato a disconnettermi, ma sono stato reindirizzato in un ciclo che mi riportava su Discourse, ancora loggato.
Utilizzo WP dal 2007 e non avevo mai sentito parlare di questo plugin fino ad ora. Grazie ancora, Simon!
Sì, è molto utile per la risoluzione dei problemi.
Vorrei verificare cosa sta succedendo con MemberPress, ma si tratta di un plugin a pagamento. Dalla lettura della loro documentazione, sembra che esista un URL di reindirizzamento al logout di MemberPress che può essere impostato nella pagina delle opzioni del plugin. Il problema potrebbe essere correlato a quella impostazione.
Sto cercando di capire come disconnettere Discourse da un sito esterno. Ho provato a cercare la documentazione e sembra che il modo per farlo sia inviare una richiesta API POST, come menzionato in questo post.
Il problema è che non capisco davvero come effettuare la richiesta API e non riesco a capire come procedere. Ho scaricato Postman e sto cercando di fare esperimenti lì, ma sto faticando. Non sono sicuro di come creare la richiesta API di cui ho bisogno, né di come implementarla successivamente sul sito esterno.
Hai qualche suggerimento su come risolvere questo problema?
Il sito è un sito WordPress che utilizza Memberpress ed è il provider SSO per il mio forum Discourse. Dopo che gli utenti si disconnettono da WordPress, posso reindirizzarli a un URL, che vorrei utilizzare per disconnetterli contemporaneamente anche da Discourse. Oppure potrei inviare una richiesta API tramite una funzione PHP che potrei aggiungere a functions.php?
Stai utilizzando il plugin WP Discourse per l’SSO? Se sì, la disconnessione da WordPress dovrebbe disconnetterti anche da Discourse, ma è stato segnalato di recente che ciò non funziona quando il plugin Memberpress è attivo su WordPress: SSO: Unable to logout. Stai riscontrando lo stesso problema?
Sto avendo qualche difficoltà a riprodurre il problema. Se potessi creare un account su uno dei vostri siti WordPress, potrei riuscire a capire cosa sta succedendo. Non ho bisogno di accesso amministratore. Se è possibile, inviami un messaggio privato con i dettagli del sito.
@TGP Puoi provare a modificare l’impostazione logout redirect di Discourse in https://www.thegearheadproject.com/?request=logout? Sembra che le richieste senza www vengano reindirizzate all’URL con www, ma che il parametro di query request=logout non venga preservato durante il reindirizzamento.
Questo potrebbe non risolvere il problema, ma sarebbe utile escluderlo come causa.
Sembra probabile che i problemi di logout su questi siti non siano correlati.
@robtech quando effettuo il logout dal tuo sito Discourse, vengo disconnesso anche dal tuo sito WordPress, quindi questa parte del processo di logout sembra funzionare correttamente sul tuo sito. Il problema che riscontro riguarda la sincronizzazione dei logout da WordPress a Discourse. Effettuando il logout dal tuo sito WordPress, non vengo disconnesso dal tuo sito Discourse.
Puoi verificare che la Chiave API e il Nome Utente di Pubblicazione impostati nella scheda Connessione WP Discourse siano corretti? Devi utilizzare una Chiave API e un nome utente da amministratore. L’opzione più semplice è utilizzare la Chiave API Master del tuo sito e impiegare ‘system’ come nome utente di pubblicazione. Dovresti vedere un avviso che indica che sei “connesso a Discourse” dopo aver salvato le opzioni in questa pagina. Sono necessarie credenziali da amministratore in questa sezione affinché gli utenti possano essere disconnessi da Discourse quando avviene il logout da WordPress.