Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Login im Frontend führt zu Logout im Backend und umgekehrt #8528

Closed
Mynyx opened this issue Oct 16, 2016 · 33 comments
Closed

Login im Frontend führt zu Logout im Backend und umgekehrt #8528

Mynyx opened this issue Oct 16, 2016 · 33 comments
Assignees
Labels
Milestone

Comments

@Mynyx
Copy link
Contributor

Mynyx commented Oct 16, 2016

Wenn man sich in einem Browser im Backend einloggt und anschließend im Frontend, ist man im Backend ausgeloggt. Loggt man sich anschließend wieder im Backend ein, ist man im Frontend ausgeloggt.

Ursache ist wohl, dass die Session ID bei Login regeneriert wird (https://github.com/contao/core/blob/master/system/modules/core/library/Contao/User.php#L435), jedoch das Login-Cookie auf der Session ID basiert (https://github.com/contao/core/blob/master/system/modules/core/library/Contao/User.php#L245-L249).

@aschempp
Copy link
Member

I hate to be right 😭

Source: #8425
@discordier @Toflar

@leofeyer
Copy link
Member

Das ist durchaus das beabsichtigte Verhalten. Wenn Du im BE angemeldet bist, musst Du die FE-Vorschau verwenden, um Benutzeranmeldungen zu simulieren. Andernfalls wirst Du wie bereits bemerkt komplett abgemeldet.

@aschempp Das hat nichts mit der Änderung aus #8425 zu tun. War schon immer so.

@Mynyx
Copy link
Contributor Author

Mynyx commented Oct 16, 2016

Nein, wenn man https://github.com/contao/core/blob/master/system/modules/core/library/Contao/User.php#L435 auskommentiert, tritt das Problem nicht auf.

Weiterhin können normalen BE-Benutzer hierzu auch nicht die FE-Vorschau verwenden, da die Möglichkeit diese als ein bestimmtes Mitglied aufzurufen nur Administratoren zur Verfügung steht.

@leofeyer leofeyer removed the invalid label Oct 16, 2016
@leofeyer
Copy link
Member

Es ist korrekt, dass die Änderung aus #8425 das Verhalten insoweit geändert hat, als dass es jetzt auch beim Login und nicht mehr nur beim Logout auftritt. Beim Logout war es definitiv schon immer so.

Sicherheit und Benutzerfreundlichkeit sind konkurrierende Ziele und in diesem Fall war uns die Sicherheit eben wichtiger.

@Mynyx
Copy link
Contributor Author

Mynyx commented Oct 16, 2016

Dass man beim Logout sowohl im BE als auch im FE ausgeloggt wurde war auch schon zuvor so, das ist jedoch m. E. mit wesentlich geringeren Nachteilen verbunden. Denn nun ist es für normale Benutzer unmöglich gleichzeitig eingeloggt im Frontend und Backend zu arbeiten.

Gibt es denn keine Lösung, bei der sowohl Sicherheit als auch Benutzerfreundlichkeit gewahrt werden würden? Könnte man nicht, wenn der Benutzer bereits im BE oder FE eingeloggt ist, den diesbezüglichen in tl_session vorhandenen Eintrag aktualisieren und das entsprechende Cookie ebenfalls neu setzen?

@asaage
Copy link

asaage commented Oct 16, 2016

@Mynyx die praktikabelste Lösung wie ich finde ist mit "inkognito-Fenster" (chrome) oder "privates Fenster" (firefox) zu arbeiten. Ich mach das jedenfalls schon ewig so.

@BugBuster1701
Copy link
Contributor

so arbeite ich auch.

@leofeyer
Copy link
Member

Eine weitere Möglichkeit ist die "angemeldet bleiben"-Option im FE. Dann kannst Du Dich beliebig im BE an- und abmelden und bleibst im FE trotzdem angemeldet.

@fritzmg
Copy link
Contributor

fritzmg commented Oct 17, 2016

@asaage @BugBuster1701 das ist nur ein Workaround, außerdem kannst du so keine versteckten/unpublished Elemente ansehen.

@aschempp
Copy link
Member

Aus meiner Sicht ist das definitiv ein Bug und eine Veränderung des bisherigen Verhaltens.

@leofeyer
Copy link
Member

Aus meiner Sicht ist das definitiv ein Bug

Nein.

und eine Veränderung des bisherigen Verhaltens.

Ja.

@aschempp
Copy link
Member

Aus meiner Sicht ist das definitiv ein Bug

Nein.

Really? Stell dir mal die Arbeit damit vor.

  1. du bist im Backend und richtest deinen Shop ein
  2. du gehst ins Frontend und testest den Bestellprozess, loggst dich als Mitglied ein
  3. du musst was umstellen, musst dich wieder im Backend anmelden
  4. willst nochmals testen, musst dich wieder im Frontend anmelden
  5. endless loop

@leofeyer
Copy link
Member

leofeyer commented Oct 18, 2016

Wie gesagt, es ist ein Trade-Off "Sicherheit gegen Benutzerfreundlichkeit". Wenn Du die FE-Vorschau verwendest, um das Mitglied anzumelden, hast Du das Problem nicht.

Ich hatte das neue Verhalten schon mit @discordier besprochen und wir waren beide der Meinung, dass die Änderung vertretbar ist hinsichtlich der erhöhten Sicherheit. Wir können es aber gerne nochmal diskutieren.

@aschempp
Copy link
Member

aschempp commented Oct 18, 2016 via email

@leofeyer
Copy link
Member

Können wir machen. Wir müssten dann nur in der User-Klasse irgendwie an die Cookie-Namen kommen, die momentan in den Unterklassen FrontendUser und BackendUser definiert werden.

@Toflar
Copy link
Member

Toflar commented Oct 18, 2016

abstract protected function setUserCookie(); - analog zu setUserFromDb().

@leofeyer
Copy link
Member

Das reicht nicht, denn bei der Anmeldung sind wir ja z.B. in der Klasse FrontendUser und brauchen trotzdem den Namen des Cookies aus der Klasse BackendUser. Wenn wäre es also public static function getCookieName().

@leofeyer
Copy link
Member

Ist aber ein Design-Flow, wenn man in der Parent-Klasse feste Referenzen auf eine Child-Klasse hat. Zudem würde das nicht für weitere Child-Klassen von dritten Entwicklern funktionieren.

@asaage
Copy link

asaage commented Oct 18, 2016

Ich glaube es war auch schon hin und wieder Gesprächsthema. Aber wie sieht es denn perspektivisch aus Mitglieder und Benutzer zu vereinen?
Meiner Meinung nach könnte das doch reichlich Vorteile Bringen bzgl. Frontend-editing, Rechtemanagement und nicht zuletzt auch in dieser Problematik.

@Mynyx
Copy link
Contributor Author

Mynyx commented Oct 18, 2016

In tl_session ist doch auch die Spalte name in welcher der Name des Cookies angegeben ist.

@Ainschy
Copy link

Ainschy commented Nov 22, 2016

@leofeyer du vergisst bei deiner Argumentation das BE User ohne Adminrechte in der Frontend Vorschau keinen FE Member auswählen können und auch den direkt Login über den Mitgliederbereich im BE nicht haben.

Damit haben Redakteure keine Change auf gewohntem Wege sich im FE anzumelden und im BE zu bleiben.

@Paddy0174
Copy link

@leofeyer
Sorry, aber ich finde Deine Argumentation nicht ganz richtig. Der "normale" Weg sollte doch sein, dass es einen unterschiedlichen Login für FE und BE gibt, die beide erstmal gar nichts miteinander zu tun haben. Ich kann ja FE-Nutzer AB sein, und im BE bin ich Nutzer BA. Beides müsste doch voneinander unabhängig sein, wenn man schon Benutzer und Mitglieder trennt...?
Und dabei geht es ja nicht um Benutzerfreundlichkeit, sondern um Trennung von eben beiden Gruppen.
Insofern sollten die Logins doch völlig getrennt gehandhabt werden, oder verstehe ich das falsch?
Ich habe nämlich gerade das Problem, dass ich aus dem BE heraus einen Link auf eine FE-Seite aufrufen will, auf der ein Modul eingebunden ist, dass nur für angemeldete FE-Nutzer sichtbar ist... Wie sollte ich denn in so einem Fall vorgehen? Genauere Erklärung kann ich gerne nachliefern, wenn gewünscht?

@fritzmg
Copy link
Contributor

fritzmg commented Jan 9, 2017

Insofern sollten die Logins doch völlig getrennt gehandhabt werden, oder verstehe ich das falsch?

Du hättest dann zwei verschiedene Logins für die selbe Session.

@Paddy0174
Copy link

Ich meint auch eher, dass eben genau das nicht so ist. FE = Session1, BE = Session2...
Oder ich verstehe die Idee dahinter einfach nicht richtig => zwei Logins = zwei Sessions?!

@Mynyx
Copy link
Contributor Author

Mynyx commented Jan 9, 2017

Die Lösung für das Problem ist doch oben schon aufgezeigt, also was spricht eigentlich noch dagegen dass diese umgesetzt wird?

@frontendschlampe
Copy link

Gibt es hier noch irgendwie "Aktivität" oder wird das so bleiben, wie es jetzt ist?

@frontendschlampe
Copy link

Noch ein Hinweis dazu aus meinem Ticket #8705 - wenn man sich mit zwei verschiedenen Domains im FE und BE einloggt, dann funktioniert es.

@Paddy0174
Copy link

Es wäre schön, wenn sich jemand (wie Du z.B. @frontendschlampe ) darum kümmern würde. Im Zweifel auch gerne in einer Erweiterung... ;-)

So wie es jetzt ist, sollte es jedenfalls nicht bleiben. Sicherheit kann, wie ich finde, keine Begründung sein. Dann muss man eben einen Weg finden, der die gewünschte Funktionalität bei gleicher Sicherheit bietet.

@leofeyer
Copy link
Member

@contao/developers Soll ich die Änderungen aus 9ae1234 rückgängig machen?

@Mynyx
Copy link
Contributor Author

Mynyx commented Apr 24, 2017

Was spricht denn dagegen das Cookie neu zu setzen? Der Name des Cookies steht ja wie bereits erwähnt in der Datenbank, sodass keine größeren Modifikationen an der User-Klasse notwendig sein dürften.

@aschempp
Copy link
Member

Die bessere Lösung wäre es sicher das Cookie neu zu setzen. Ist aber halt umständlich… Mit Symfony Security sollte sich das erledigen, aber da das wohl noch etwas dauert und in 3.5 nicht kommt… von mir aus können wir die Änderung auch entfernen.

@leofeyer
Copy link
Member

Wie am 18. Mai in Mumble besprochen, wollen wir in Contao 4.4 ein neues Feld "erlaubte Mitgliedergruppen" in den Benutzer(gruppen)-Einstellungen hinzufügen, damit Nicht-Admins sich in der Frontend-Vorschau als bestimmte Benutzer anmelden können.

leofeyer added a commit to contao/core-bundle that referenced this issue May 22, 2017
@leofeyer leofeyer self-assigned this May 22, 2017
@leofeyer leofeyer added this to the 4.4.0 milestone May 22, 2017
@leofeyer
Copy link
Member

Implementiert in contao/core-bundle@226a2c5.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

10 participants