En las plantillas de Symfony 2 (usando Twig), ¿cómo puedo verificar efectivamente si un usuario no está conectado?
No quiero usar ROLE
cheques. Quiero una forma sencilla de comprobar si un usuario no ha iniciado sesión.
Soy consciente de que comparar app.user.username
con anon
funciona, pero eso no me parece correcto.
symfony
authentication
twig
symfony-2.1
Herramienta
fuente
fuente
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
lugar. Consulte el documento de Symfony2: symfony.com/doc/current/book/… . También disponible para Silex: silex.sensiolabs.org/doc/providers/…{% if is_granted('IS_AUTHENTICATED_FULLY') %}
solo devolverá verdadero si el usuario se ha autenticado en la sesión actual. Devolverá falso si el usuario se autenticó mediante una cookie de recordarme. El uso{% if app.user %}
es correcto, si se quiere devolver verdadero independientemente de cuándo se autenticó el usuario.{% if app.security.token is null or app.security.token.user == 'anon.' %}
así es como lo hice funcionar para mí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 los roles, pero los incluyo para que otros usuarios de SO puedan copiar y pegar de esto en el futuro. - ¡Cada vez que busco esto en Google, termino aquí!
Fuentes de Symfony Doc:
Compruebe si algún usuario inició sesión (independientemente del rol)
Como respondió, puede usar
app.user
para verificar si algún usuario ha iniciado sesión.Comprobación del estado de autenticación
Puedes usar el
is_granted()
método para verificarROLES
(los siguientes son todos los roles asignados por Symfony, también puedes tener tus propios roles (más abajo) )de los documentos:
Comprobación de roles
También puede usarlo
is_granted()
para verificar roles.Suponiendo que tenemos 3 funciones (
ROLE_SUPER_ADMIN
,ROLE_ADMIN
, yROLE_USER
)Haciendo lo anterior dentro de un controlador
Vea la siguiente respuesta: ¿Cómo verificar si un usuario está conectado a Symfony2 dentro de un controlador?
fuente
-%}
y qué{%-
significa? por qué no%}
, y{%
?-
Elimina todos los espacios en blanco para que sea más fácil de leer en la fuente de origen del navegador. Más información aquí: twig.sensiolabs.org/doc/templates.html#whitespace-controlapp.user
, asíThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
. No recuerdo dónde leí esa aplicación. El usuario devuelve "anon". cadena lamentablemente y en qué circunstancias.The representation of the current user or null if there is none.
, por lo que será nula. Un paquete de terceros podría devolver una cadena si suUserInterface
implementación personalizada tiene un__toString()
método que se llama cuando es anónimo.