Nos modelos do Symfony 2 (usando Twig), como posso verificar efetivamente se um usuário não está logado?
Eu não quero usar ROLE
cheques. Desejo uma forma direta de verificar se um usuário não está conectado.
Estou ciente de que comparar app.user.username
com anon
obras, mas isso simplesmente não parece certo para mim.
symfony
authentication
twig
symfony-2.1
Ferramenta
fonte
fonte
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
lugar. Veja o documento Symfony2: symfony.com/doc/current/book/… . Também disponível para Silex: silex.sensiolabs.org/doc/providers/…{% if is_granted('IS_AUTHENTICATED_FULLY') %}
só retornará verdadeiro se o usuário tiver se autenticado na sessão atual. Ele retornará falso se o usuário for autenticado por meio de um cookie de lembrar de mim. O uso{% if app.user %}
está correto, se desejar retornar verdadeiro, independentemente de quando o usuário foi autenticado.{% if app.security.token is null or app.security.token.user == 'anon.' %}
foi assim que consegui funcionar para mimEmbora a resposta atual responda à pergunta do OP, gostaria de acrescentar mais detalhes.
Eu entendo que o OP não deseja verificar as funções, mas estou incluindo-as para que outros usuários do SO possam copiar e colar a partir disso no futuro. - toda vez que eu procuro no Google, acabo aqui!
Fontes Symfony Doc:
Verifique se algum usuário está conectado (independentemente da função)
Conforme respondido, você pode usar
app.user
para verificar se algum usuário está logado.Verificando o status de autenticação
Você pode usar o
is_granted()
método para verificarROLES
, (Abaixo estão todas as funções atribuídas pelo symfony, você também pode ter suas próprias funções (mais abaixo) )dos documentos:
Verificando funções
Você também pode usar
is_granted()
para verificar as funções.Supondo que temos 3 funções (
ROLE_SUPER_ADMIN
,ROLE_ADMIN
, eROLE_USER
)Fazendo o acima dentro de um controlador
Veja a seguinte resposta: Como verificar se um usuário está logado no Symfony2 dentro de um controlador?
fonte
-%}
e{%-
representa? por que não%}
e{%
?-
remove todos os espaços em branco à direita para que seja mais legível na fonte de origem do navegador. Mais informações aqui: twig.sensiolabs.org/doc/templates.html#whitespace-controlapp.user
, indo assimThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
. Não me lembro onde li que app.user retorna "anon". string infelizmente e em que circunstâncias.The representation of the current user or null if there is none.
, portanto, será nula. Um pacote de terceiros pode retornar uma string se suaUserInterface
implementação customizada tiver um__toString()
método que é chamado quando anônimo.