Ergebnis 1 bis 4 von 4

Thema: Contao 4.7 und Token-Login

  1. #1
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard Contao 4.7 und Token-Login

    Ich migriere gerade eine Contao 3.5 Anwendung nach Contao 4.7.

    Das System hat sehr viele Mails verschickt mit Links zu einem internen Kundenbereich. Der Kunde wollte, dass die Benutzer durch einen Token automatisch eingeloggt werden - was auch funktioniert (hat). Genutzt hatte ich dazu den initializeSystem Hook. Unter Contao 4.7 bekomme ich das nicht ans Laufen.

    Ich kenne das Bundle von Richard Henkenjohann.
    Allerdings wird hier eine eigene Route genutzt. Das ist auch gut so, aber ich kann die vielen Links mit Token nicht ins Leere laufen lassen. Daher möchte ich, dass wenn jemand die URL kunde.de/interneSeite.html?token=token automatisch eingeloggt wird und die Seite sieht. Ein Redirect auf die gleiche Seite wäre auch kein Problem. Den LoginToken habe ich an dieser Stelle schon geprüft.

    Das habe ich aktuell versucht. Aber auch mit einem Redirect am Ende klappt es nicht. Hat jemand eine Idee?

    PHP-Code:
    $request $this->requestStack->getCurrentRequest();
    $user $this->userProvider->loadUserByUsername($username);
    $usernamePasswordToken = new UsernamePasswordToken($usernull'frontend'$user->getRoles());
    $this->tokenStorage->setToken($usernamePasswordToken);
    $event = new InteractiveLoginEvent($request$usernamePasswordToken);
    $this->dispatcher->dispatch('security.interactive_login'$event); 
    An einer anderen Stelle habe ich es hinbekommen mit dem Login. Beim Reservieren eines Produktes muss sich der Kunde zeitgleich registrieren (ein Formular in einer Lightbox). Für das Formular nutzte ich terminal42/contao-ajaxform und den processFormData Hook zum Anlegen und einloggen des Kunden. Anschließend wird der Hinweis von ajaxform angezeigt mit einem Link zur internen Kundenseite. Klickt der Kunde auf diesen Link, kommt er zur internen Seite und ist korrekt eingeloggt. Geht also.

    In der gleichen Lightbox (anderer Reiter) kann sich der Kunde per Ajax einloggen und das Produkt, dann ohne Registrierung, reservieren. Hier nutze ich die _contao/login Route und checke den Login-Status per AJAX (da der Kunde ja sofort mit der Reservierung weitermachen soll. Klappt auch. Nur der Token-Login leider nicht.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Was genau funktioniert bei der Kombination mit Richards Extension und einem Redirect nicht? Wie hast du den Redirect eingerichtet?

  3. #3
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Also zunächst einmal: ich habe es gelöst.

    In meinem Beispiel lief der Code, aber der Benutzer wurde einfach nicht eingelogged.

    Ich nutze jetzt statt dem initializeSystem Hook im Prinzip die Lösung von Richard in Verbindung mit einem Redirect in der .htaccess und einer eigenen Route.

  4. #4
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Mit dem Redirect in meinem ersten Post meine ich die Weiterleitung auf die geschützte Seite direkt nach dem Login-Script. Hier hatte ich das noch mit Controller::redirect gemacht. Vielleicht hätte ich hier auch mit Symfony Mitteln arbeiten müssen? Keine Ahnung. Mit dem htaccess Redirect und der eigenen Route klappt es ja wie gesagt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •