So che questo è stato chiesto infinite volte, ma nessuna delle risposte che ho trovato descritto la connessione effettiva al back-end.Come scoprire se l'utente è ancora loggato usando l'autenticazione basata su sessione?
Ho un'app JS di una pagina che comunica con l'API di backend (Django) di piccole dimensioni. Io uso l'autenticazione basata sulla sessione. Le informazioni utente sono memorizzate nella cache al primo caricamento. Se la sessione scade, ho bisogno di cambiare l'intestazione della pagina e svuotare le informazioni utente dalla cache. Tuttavia, la maggior parte delle mie risorse API sono pubbliche e restituiscono sempre 200. Diverse altre risorse sono private e restituiscono 403 se l'utente non ha effettuato l'accesso, il che è ottimo in quanto mi dà le informazioni di cui ho bisogno. Il problema è che alcune pagine accedono solo alle risorse pubbliche. Nel caso in cui la sessione venga cancellata improvvisamente sul backend e l'utente passi all'URL che accede solo alle risorse pubbliche, le informazioni dell'utente non vengono scaricate e ho un problema di UX.
La mia idea iniziale era di richiedere risorse di utenti privati (chiamiamolo /users/self/
) a ogni modifica di URL che restituisce 200 nel caso l'utente sia autenticato e 403 nel caso in cui non lo siano. Ciò richiede tuttavia 1 richiesta extra prima di ogni altra richiesta per ogni modifica dell'URL, che non è proprio l'ideale.
Esistono tecniche più semplici che potrei utilizzare in questo caso? Non mi dispiace nemmeno passare ad altro tipo di autenticazione se questo risolvesse il problema.
Il problema è che la maggior parte delle risposte sono pubbliche e restituiscono sempre 200. Non avrebbe senso restituire 403/401 se la sessione è scaduta. –
@ OndrejSlinták non mescolare percorsi sul server che richiedono una sessione con percorsi pubblici aperti. Questo creerà più lavoro per te più tardi. – cgTag
Quello che stai dicendo è che le risposte pubbliche dipendono da alcune risorse limitate, il che significa che devono essere limitate o in qualche modo accedere alla risorsa riservata che causa un reindirizzamento dell'autenticazione all'accesso. – Chandermani