Ich weiß, dass dies unzählige Male gefragt wurde, aber keine der Antworten, die ich fand, beschrieb die tatsächliche Verbindung zum Backend.Wie kann man herausfinden, ob der Benutzer immer noch mit der sessionbasierten Authentifizierung angemeldet ist?
Ich habe eine einseitige JS-App, die mit kleinen Backend (Django) API kommuniziert. Ich benutze Session-basierte Authentifizierung. Benutzerinformationen werden beim ersten Laden zwischengespeichert. Wenn die Sitzung abläuft, muss ich den Seitenkopf ändern und die Benutzerinformationen aus dem Cache leeren. Die meisten meiner API-Ressourcen sind jedoch öffentlich und geben immer 200 zurück. Mehrere andere Ressourcen sind privat und geben 403 zurück, wenn der Benutzer nicht angemeldet ist. Das ist großartig, da mir genau die Informationen zur Verfügung stehen, die ich brauche. Das Problem besteht darin, dass einige Seiten nur auf öffentliche Ressourcen zugreifen. Falls die Sitzung plötzlich im Backend gelöscht wird und der Benutzer zur URL navigiert, die nur auf öffentliche Ressourcen zugreift, werden Benutzerinformationen nicht geleert und ich habe ein UX-Problem.
Meine ursprüngliche Idee war, private Benutzer Ressource (nennen wir es /users/self/
) bei jeder URL Änderung, die 200 zurückgibt, wenn Benutzer authentifiziert wird und 403, falls sie nicht authentifizieren. Dies erfordert jedoch eine zusätzliche Anfrage vor jeder anderen Anfrage für jede URL-Änderung, was nicht wirklich ideal ist.
Gibt es irgendwelche einfacheren Techniken, die ich in diesem Fall verwenden könnte? Es macht mir nichts aus, sogar zu einer anderen Art von Authentifizierung zu wechseln, wenn das das Problem lösen würde.
Das Problem ist, dass die meisten Antworten öffentlich sind und immer 200 zurückgeben. Es wäre nicht sinnvoll, 403/401 zurückzugeben, wenn die Sitzung abgelaufen ist. –
@ OndrejSlinták nicht Routen auf dem Server, die eine Sitzung mit offenen öffentlichen Routen benötigen. Das wird später mehr Arbeit für dich schaffen. – cgTag
Was Sie sagen, ist, dass die öffentlichen Antworten von einer eingeschränkten Ressource abhängig sind, was bedeutet, dass entweder sie selbst eingeschränkt werden sollten oder in irgendeiner Weise auf die eingeschränkte Ressource zugreifen sollten, die eine Authentifizierungsumleitung beim Zugriff verursacht. – Chandermani