L’utente A accede al mio sito e poi clicca su “Forum”. Viene reindirizzato a Discourse, che effettua una chiamata di ritorno al mio sito tramite SSO; l’utente viene autenticato e accede automaticamente a Discourse. Ottimo, funziona perfettamente.
Dopo un po’, l’utente A si allontana dal computer e la sua sessione scade automaticamente. Non clicca mai specificamente su “Esci” né nella mia applicazione né su Discourse.
L’utente B accede al mio sito sullo stesso dispositivo, clicca per andare ai forum e, poiché Discourse ha ancora l’utente A loggato, non richiede l’SSO dato che la sessione di Discourse è ancora attiva. Ora l’utente B è loggato su Discourse come l’utente A. :-\
Giusto, ma come posso farlo se l’utente si è “allontanato” dal computer e la sua sessione è scaduta? Forse è più una domanda su PHP (che è il linguaggio usato per il mio sito principale)…
Potresti chiarire cosa intendi con questo? Qual è la durata della sessione per la tua app? Come gestisci la scadenza della sessione lì?
Discourse ha una impostazione massima età della sessione che, per impostazione predefinita, è impostata su 1440 ore, ovvero 60 giorni.
In breve: se non sai che l’utente al computer è cambiato, non c’è nulla che tu possa fare facilmente per prevenirlo. Potresti ridurre la durata della sessione o chiamare periodicamente dalla tua app per disconnettere gli utenti, ma se i tuoi utenti restano al computer per periodi più lunghi, si troveranno a dover ripetere il flusso di autenticazione.
Discourse può estendere qualsiasi flusso di accesso e sessione che stai attualmente utilizzando, ma senza ulteriori informazioni su quanto sopra è difficile individuare esattamente dove risieda il problema e quali opportunità esistano.
Grazie per la tua risposta! Ho capito che questo problema riguarda in definitiva la gestione dell’utente sul sito principale.
Se l’utente si disconnette manualmente dal sito principale, devo chiamare Discourse (tramite API) per disconnetterlo anche lì.
E se l’utente non si disconnette ma la sua sessione scade, devo chiamare Discourse per disconnetterlo anche lì allo stesso momento.
E infine: quando un utente si disconnette da Discourse usando “disconnetti” lì, devo catturare quell’evento (tramite webhook) e disconnetterlo anche sul mio sito.