Session handling bzw. automatischer Logoff im Backend

Support zu BlackCat CMS allgemein
Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Di 5. Mai 2015, 13:24

Das ist ein Verhalten, das wir von LEPTON mitgenommen haben und das WB (zumindest früher) nicht hat(te). Nach einer gewissen Zeit wird man aus dem Backend rausgeworfen, egal ob man noch aktiv ist oder nicht. Unter Umständen verliert man dadurch die letzten Änderungen.

Ich habe dazu mal einen Issue aufgemacht und würde gerne Eure Meinung hören.

https://github.com/BlackCatDevelopment/ ... issues/304
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
florian
Beiträge: 75
Registriert: Mo 12. Aug 2013, 09:47
Wohnort: Leipzig
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von florian » Di 5. Mai 2015, 16:37

Doch, WB hat das auch (und ich glaube schon immer). Das hat mich schon mindestens eine Tastatur und zwei Stunden Lebenszeit gekostet. Sprich, ich arbeite an einem Text oder Formular (mpForm) oder sonst irgendwas, klicke auf die Speichern-Schaltfläche unter dem betr. Abschnitt und statt der "Erfolgreich"-Meldung kommt die Login-Seite. Natürlich ist dann alles futsch. Arrrgh. Wäre cool, wenn BC so etwas nicht bringen würde.

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Di 5. Mai 2015, 17:15

Hm, ich habe dazu eine andere Aussage, aber was soll's, ich weiß es nicht. Ist ja auch egal. :lol:

Denkbar wäre folgende Umsetzung:
  • Grundsätzlich: Einstellbare Session-Lebensdauer 1)
  • Session-Time wird bei jedem Zugriff zurückgesetzt, die Lebensdauer beginnt also von vorn
zu 1): Ein komplettes Abschalten der Session Lebensdauer - Wert 0 - ist nicht ungefährlich, auf der anderen Seite wurde uns schon mal vorgeworfen, den Admin zu gängeln. :oops: (Kennwort-Restriktionen) Da wäre also zu überlegen, ob man das zuläßt oder nur eine sinnvolle Spanne erlaubt, also z.B. minimal 1 Stunde bis maximal 12 Stunden oder so.

Wünschenswert, aber vermutlich nicht so einfach: Angenommen, man hat eine kurze Session Lebenszeit und für eine Aktion aus irgendeinem Grund (Mittagspause, Telefon, ...) länger gebraucht. Die Session würde also beendet. Dies wäre aber zu unterbinden, wenn Daten gesendet werden. Problem: Es ist nicht zu unterscheiden, ob der Zugriff noch von derselben Person kommt oder nicht. Um beim Szenario Mittagspause zu bleiben - es könnte ja sein, daß jemand die Abwesenheit des Benutzers ausnutzt, um irgendwelchen Mist zu speichern. Daher müßte man eigentlich die Daten zwischenspeichern, den Benutzer ausloggen, und beim Einloggen nachfragen, ob die letzte Änderung übernommen werden soll. Das ist aber wiederum modulabhängig.

Vielleicht könnte man das zweistufig angehen, erst obige "einfache" Umsetzung und das mit dem Zwischenspeichern für später aufheben. Wenn es denn überhaupt mit vertretbarem Aufwand machbar ist.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
florian
Beiträge: 75
Registriert: Mo 12. Aug 2013, 09:47
Wohnort: Leipzig
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von florian » Di 5. Mai 2015, 18:15

ich habe dazu eine andere Aussage
Hm? Von wem?
<Rechthaberei>Ein Post im WB-Forum von (Trommelwirbel)... 2005!</Rechthaberei>

Naja, wurscht...

Ich verstehe davon nicht viel, aber ich glaube, die Session-Lebensdauer einzustellen, funktioniert insbesondere bei Shared-Hosting-Anbietern nicht so ohne weiteres. Sind das nicht serverseitig vorgegebene Werte?

Ideal wäre, wenn die Session aus welchen Gründen und zu welchem Zeitpunkt auch immer ungültig wird, ein modal window, das sich über den Eingabebereich legt und in dem ein entsprechender Hinweis sowie die Möglichkeit zur Eingabe der Anmeldedaten (Benutzername/Passwort) besteht - modal window, weil dann eventuell zuvor erfolgte und nicht gespeicherte Eingaben nicht verloren gehen.

Bei dem Tool OneFileCMS ist es ein simpler Countdown, der herunterzählt und zeigt, wann die Session ungültig wird. Auch das wäre hilfreicher, als überraschend ausgeknockt, pardon, ausgeloggt zu werden.

Wie macht Wordpress das eigentlich? Imho tritt da das Problem nicht auf.

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Di 5. Mai 2015, 18:30

florian hat geschrieben:
ich habe dazu eine andere Aussage
Hm? Von wem?
Einem Kunden. Ist aber wirklich wurscht. Manchmal täuscht die Erinnerung halt, und ich hab so lang nicht mehr ernsthaft mit WB gearbeitet (nur um mal eben was zu testen), daß ich weder das eine noch das andere beschwören könnte.
florian hat geschrieben: Ich verstehe davon nicht viel, aber ich glaube, die Session-Lebensdauer einzustellen, funktioniert insbesondere bei Shared-Hosting-Anbietern nicht so ohne weiteres. Sind das nicht serverseitig vorgegebene Werte?
Das ist korrekt, was die globale Session Lifetime angeht, die in der php.ini definiert ist. LEPTON und BC (eventuell auch WB) machen das über die Cookie Lifetime, die hartcodiert auf 3 Stunden eingestellt ist. Cookie weg, Session weg.

Die Idee mit dem Modal finde ich super, auch wenn ich derzeit noch nicht weiß, wie das zu implementieren ist. Aber das ist ja kein Hinderungsgrund. *g*

Vielleicht hat Wordpress ja keine Session Lifetime...
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Mi 6. Mai 2015, 16:48

Ich hab jetzt mal in den Code von WB 2.8.3 geschaut und da gibt es keinen analogen Code. Demnach richtet sich die Session Lifetime bei WB wohl tatsächlich ausschließlich nach den Einstellungen in der php.ini. Vermutlich habt Ihr beide Recht, mein Kunde und Du. ;) Halt je nachdem, wie die php.ini konfiguriert ist. Bei LEPTON und BC ist jedenfalls nach 3 Stunden Schluß, da kannst Du auf dem Server einstellen, was Du willst.

Ich habe mir jetzt folgendes überlegt: BC kann beim Erzeugen der Session die Einstellung aus der php.ini übernehmen - auslesen kann man sie ja. Den Cookie kann man dann analog konfigurieren, so daß Cookie Lifetime und Session Lifetime übereinstimmen.

Was nun den Ablauf der Session angeht, gibt es ein Problem: Die Session ist was serverseitiges, der Browser was clientseitiges, und HTTP ist ein statusloses Protokoll. Der Browser kriegt es gar nicht mit, wenn auf der Serverseite die Session abläuft, erst beim nächsten Zugriff. Und weil dann die Session weg ist, sind auch alle darin gespeicherten Daten (z.B. die Benutzerkennung) weg.

Ein Countdown erfordert Javascript, und ich bin mir nicht sicher, ob man dafür Ressourcen einsetzen will. Ich muß da mal nachforschen, auch wie das mit den Sessions eigentlich genau funktioniert. ;)

Added in 2 hours 26 minutes 6 seconds:
So, einen Countdown hab ich schon mal. :D 5 Minuten vor dem Ende wechselt die Hintergrundfarbe auf rot. Die Session Lifetime wird aus der php.ini ausgelesen.
2015-05-06 16_16_12-BlackCat CMS » Administration - START.png
Normale Darstellung
2015-05-06 16_16_12-BlackCat CMS » Administration - START.png (3.75 KiB) 3870 mal betrachtet
2015-05-06 16_14_47-BlackCat CMS » Administration - START.png
5 Minuten vor Ablauf wechselt die Hintergrundfarbe
2015-05-06 16_14_47-BlackCat CMS » Administration - START.png (4 KiB) 3870 mal betrachtet
Added in 1 hour 31 minutes 16 seconds:
So, 30 Sekunden vor Ablauf der Session kommt jetzt auch schon ein netter Dialog. (Noch nicht übersetzt.)
2015-05-06 17_48_02-BlackCat CMS » Administration - START.png
2015-05-06 17_48_02-BlackCat CMS » Administration - START.png (20.78 KiB) 3870 mal betrachtet
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
creativecat
Beiträge: 1067
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von creativecat » Do 7. Mai 2015, 07:14

Sehr cool auch umgesetzt. Genau der richtige Platz dafür! :-) Danke!

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Do 7. Mai 2015, 09:26

Es gibt noch ein paar Probleme, aber alles in allem bin ich schon recht weit. Ein Hauptproblem ist, daß man manchmal mit F5 auf die Seite zurückkommt, ohne sich erneut anmelden zu müssen, was ich nicht verstehe... Da im Hintergrund ein sauberer Logoff stattfindet. Scheint was mit dem Browsercache zu tun zu haben.

Hier noch ein Screenshot von dem Formular, wenn man den Countdown verpaßt hat. Der Hintergrund wird zu 90% abgedunkelt.
Dateianhänge
2015-05-06 18_29_11-BlackCat CMS » Administration - START.png
2015-05-06 18_29_11-BlackCat CMS » Administration - START.png (22.42 KiB) 3865 mal betrachtet
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
florian
Beiträge: 75
Registriert: Mo 12. Aug 2013, 09:47
Wohnort: Leipzig
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von florian » Do 7. Mai 2015, 09:30

Boarh! Sehr cool.

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Do 7. Mai 2015, 09:55

"Geht nicht - gibt's nicht!" :mrgreen:
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Antworten