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
を使用して、anyユーザーがログインしているかどうかを確認できます。
{% 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
を確認できます(以下はsymfonyによって割り当てられたすべてのロールです。独自のロールを持っている場合もあります(以下で詳しく説明します)))
{% 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 cookieを介して認証されたユーザーに自動的に割り当てられます。
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にログインしているかどうかを確認する方法?