[symfony] Symfony 2 : 사용자가 템플릿 내에 로그인되어 있지 않은지 어떻게 확인합니까?

Symfony 2 템플릿 (Twig 사용)에서 사용자가 로그인하지 않았는지 어떻게 효과적으로 확인할 수 있습니까?

ROLE수표 를 사용하고 싶지 않습니다 . 사용자가 로그인하지 않았는지 확인하는 간단한 방법을 원합니다.

작품 과 비교 app.user.username하는 것은 잘 알고 anon있지만, 그저 나에게 옳지 않다고 생각합니다.



답변

app.user가 설정되어 있는지 확인할 수 있습니다.

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


답변

현재 답변이 OP의 질문에 대한 답변이지만 더 자세한 내용을 추가하고 싶습니다.

나는 OP가 역할을 확인하고 싶지 않다는 것을 이해하지만, 다른 SO 사용자가 나중에 여기에서 복사하여 붙여 넣을 수 있도록 포함하고 있습니다. -내가 이걸 구글링 할 때마다 여기까지 온다!

Symfony Doc 출처 :


로그인 한 사용자가 있는지 확인합니다 (역할에 관계없이).

대답, 당신은 사용할 수 app.user있는지 확인하는 어떤 사용자가 로그인됩니다.

{% 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 %}

인증 상태 확인

is_granted()방법을 사용하여 ROLES, (아래는 심포니에서 할당 한 모든 역할입니다. 자신의 역할을 가질 수도 있습니다 (아래 참조) ).

{% 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 %}

문서에서 :

IS_AUTHENTICATED_ANONYMOUSLY-사이트의 방화벽으로 보호 된 부분에 있지만 실제로 로그인하지 않은 사용자에게 자동으로 할당됩니다. 익명 액세스가 허용 된 경우에만 가능합니다.

IS_AUTHENTICATED_REMEMBERED-Remember me 쿠키를 통해 인증 된 사용자에게 자동으로 할당됩니다.

IS_AUTHENTICATED_FULLY-현재 세션 동안 로그인 세부 정보를 제공 한 사용자에게 자동으로 할당됩니다.


역할 확인

is_granted()역할을 확인 하는 데 사용할 수도 있습니다 .
우리는 3 개 역할을 가정 ( 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 %}

컨트롤러 내부에서 위의 작업 수행

다음 답변보기 : 사용자가 컨트롤러 내부에서 Symfony2에 로그인했는지 확인하는 방법은 무엇입니까?


답변