authentication - formato - twig tutorial
Symfony 2: ¿Cómo puedo verificar si un usuario no ha iniciado sesión dentro de una plantilla? (2)
En las plantillas de Symfony 2 (usando Twig), ¿cómo puedo verificar efectivamente si un usuario no está conectado?
No quiero usar controles de ROLE
. Quiero una manera directa de verificar si un usuario no está conectado.
Soy consciente de que la comparación de app.user.username
con anon
funciona, pero eso no me parece correcto.
Aunque la respuesta actual responde a la pregunta del OP, me gustaría agregar más detalles.
Entiendo que el OP no quería verificar las funciones, pero las incluyo para que otros usuarios de SO puedan copiar y pegar en este futuro. - ¡Cada vez que googleo esto, termino aquí!
Symfony Doc Fuentes:
- http://symfony.com/doc/current/book/security.html
- http://symfony.com/doc/current/cookbook/security/remember_me.html
Compruebe si algún usuario inició sesión (independientemente de la función)
Tal como se respondió, puede usar app.user
para verificar si algún usuario ha iniciado sesión.
{% 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 %}
Comprobando el estado de autenticación
Puede utilizar el método is_granted()
para comprobar ROLES
. (A continuación se is_granted()
todos los roles asignados por Symfony, también puede tener sus propios roles (más abajo) )
{% 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 %}
de los documentos:
IS_AUTHENTICATED_ANONYMOUSLY: se asigna automáticamente a un usuario que se encuentra en una parte protegida del firewall del sitio pero que no ha iniciado sesión realmente. Esto solo es posible si se ha permitido el acceso anónimo.
IS_AUTHENTICATED_REMEMBERED: asignado automáticamente a un usuario que fue autenticado a través de una cookie recordarme.
IS_AUTHENTICATED_FULLY: se asigna automáticamente a un usuario que proporcionó sus datos de inicio de sesión durante la sesión actual.
Comprobando Roles
También puede usar is_granted()
para buscar roles.
Suponiendo que tenemos 3 roles ( ROLE_SUPER_ADMIN
, ROLE_ADMIN
, y 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 %}
Hacer lo anterior dentro de un controlador
Vea la siguiente respuesta: ¿Cómo verificar si un usuario está conectado a Symfony2 dentro de un controlador?
Puede verificar si app.user está configurado.
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}