wake-up-neo.com

Symfony 2: Wie überprüfe ich, ob ein Benutzer in einer Vorlage nicht angemeldet ist?

Wie kann ich in Symfony 2-Vorlagen (mit Twig) effektiv überprüfen, ob ein Benutzer nicht angemeldet ist?

Ich möchte keine ROLE Schecks verwenden. Ich möchte auf einfache Weise überprüfen, ob ein Benutzer nicht angemeldet ist.

Mir ist bewusst, dass der Vergleich app.user.username mit anon funktioniert, aber das fühlt sich für mich einfach nicht richtig an.

98
Tool

Sie können überprüfen, ob app.user eingestellt ist.

 {% if app.user %}
    # user is logged in
 {% else %}
    # user is not logged in
 {% endif %}
187
Checksum

Obwohl die aktuelle Antwort die Frage des OP beantwortet, möchte ich weitere Details hinzufügen.

Ich verstehe, dass das OP keine Rollen überprüfen wollte, aber ich beziehe sie ein, damit andere SO= Benutzer in Zukunft daraus kopieren und einfügen können. - jederzeit Ich google das, ich lande hier!

Symfony Doc Quellen:


Überprüfen Sie, ob ein Benutzer angemeldet ist (unabhängig von der Rolle).

Wie beantwortet, können Sie mit app.user Prüfen, ob ein Benutzer angemeldet ist.

{% if app.user %}
    # user is logged in (any and all users, regardless of ROLE_*)
{% elseif not app.user %}
    # user is not logged in (note the `not` in the `elseif` statement)
{% endif %}

Authentifizierungsstatus prüfen

Sie können die is_granted() -Methode verwenden, um nach ROLES zu suchen. (Im Folgenden werden alle von symfony zugewiesenen Rollen aufgeführt. Möglicherweise haben Sie auch eigene Rollen (more unten) )

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
    # This user entered their credentials THIS session
{% elseif is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    # User logged in via a cookie (ie: Auth again before doing sensitive things)
{% elseif is_granted('IS_AUTHENTICATED_ANONYMOUSLY') %}
    # This is a `guest` or anonymous user
{% endif %}

aus den Dokumenten:

IS_AUTHENTICATED_ANONYMOUSLY - Wird automatisch einem Benutzer zugewiesen, der sich in einem durch eine Firewall geschützten Teil der Site befindet, sich jedoch nicht angemeldet hat. Dies ist nur möglich, wenn anonymer Zugriff gewährt wurde.

IS_AUTHENTICATED_REMEMBERED - Wird automatisch einem Benutzer zugewiesen, der über ein Remember-Me-Cookie authentifiziert wurde.

IS_AUTHENTICATED_FULLY - Wird automatisch einem Benutzer zugewiesen, der seine Anmeldedaten während der aktuellen Sitzung angegeben hat.


Rollen überprüfen

Sie können auch is_granted() verwenden, um nach Rollen zu suchen.
Angenommen, wir haben 3 Rollen (ROLE_SUPER_ADMIN, ROLE_ADMIN, & ROLE_USER)

{% if is_granted('ROLE_SUPER_ADMIN') -%}
    # You're `ROLE_SUPER_ADMIN`
{% elseif is_granted('ROLE_ADMIN') -%}
    # You're `ROLE_ADMIN`
{% elseif is_granted('ROLE_USER') -%}
    # You're `ROLE_USER`
{% else %}
    # You're a `nobody` ;P
{%- endif %}

Führen Sie die obigen Schritte in einem Controller aus

Zeigen Sie die folgende Antwort an: So überprüfen Sie, ob ein Benutzer in Symfony2 in einem Controller angemeldet ist?

94
Anil