Remember me Funktion beim Login

Etwas aus dem Symfony2 Kochbuch.

Sobald sich ein Benutzer authentifiziert werden die Anmeldeinformationen in der Session gespeichert. Sobald die Sitzung beendet wird, werden die Informationen gelöscht und der Benutzer muss beim nächsten Besuch der Web-Anwendung seine Daten neu eingeben. Die Remember me Funktion ist dazu da die Anmeldeinformationen zu protokollieren und die Login-Daten wieder bereitzustellen beim nächsten Website Besuch für den Benutzer.

In Symfony kann man kann den Benutzern erlauben länger eingeloggt zu bleiben als die Zeit einer Session erlaubt. Dies erfolgt mit Hilfe eines Cookie mit der remember_me Firewall Option. Die Firewall benötigt in der Konfiguration einen geheimen Schlüssel, welcher dazu dient den Inhalt des Cookie’s zu entschlüsseln.

Die Firewall Option hat noch mehrere Einstellmöglichkeiten zu bieten. Neben dem key, lifetime, path und domain.

# Datei: app/config/security.yml   # in YAML Code
firewalls:
    main:
        remember_me:
            key:      "%secret%"
            lifetime: 31536000 # 365 days in seconds
            path:     /
            domain:   ~ # Defaults to the current domain from $_SERVER

Es ist eine gute Sache den Benutzer die Option zu geben und ihn darin zu unterstützen, ob er die Remember me Funktion einsetzen möchte oder nicht. Da es nicht in jeder Situation angebracht ist. Für gewöhnlich kann der Benutzer eine Checkbox im Anmeldeformular anklicken, dass die Remember me Funktion darstellt und aktiviert. Wird in Symfony die Checkbox mit dem Namen _remember_me belegt, wird automatisch beim aktivieren der Checkbox und nach erfolgreichem Login des Benutzers ein Cookie erstellt. Der Benutzer wird automatisch bei zukünftigen Website-Besuchen angemeldet sein solange das Cookie gültig bleibt.

Hier das Beispiel-Formular aus der Symfony Dokumentation im Twig Code:

{# src/Acme/SecurityBundle/Resources/views/Security/login.html.twig #}
{% if error %}
    <div>{{ error.message }}</div>
{% endif %}

<form action="{{ path('login_check') }}" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" />

    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />

    <input type="checkbox" id="remember_me" name="_remember_me" checked />
    <label for="remember_me">Keep me logged in</label>

    <input type="submit" name="login" />
</form>

 

Das vollständige Symfony Kapitel hierzu und mit tiefergehenden Informationen liegt unter:
symfony.com/doc/current/cookbook/security/remember_me.html
Dazu gehört ein Absatz wie: Zwingen des Benutzers sich neu zu authentifizieren bevor der Zugriff auf bestimmte Ressourcen erteilt wird.

Advertisements

Kommentare

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s