回答:
app.userが設定されているかどうかを確認できます。
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
代わりに使用してください。Symfony2 doc:symfony.com/doc/current/book/…を参照してください。:サイレックスのためにも利用できるsilex.sensiolabs.org/doc/providers/...
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
は、ユーザーが現在のセッションで認証されている場合にのみtrueを返します。ユーザーが記憶機能Cookieを介して認証された場合は、falseを返します。{% if app.user %}
ユーザーがいつ認証されたかに関係なくtrueを返したい場合は、正しい使い方です。
{% if app.security.token is null or app.security.token.user == 'anon.' %}
それは私がそれを私のために機能させた方法です
現在の回答は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
(以下は、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-記憶機能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 %}
-%}
を{%-
意味し、何を意味するのか?なぜない%}
と{%
?
-
それは、ブラウザのソースのソースで、より読みやすいですように、すべての末尾の空白を削除します。詳細はこちら:twig.sensiolabs.org/doc/templates.html#whitespace-control
app.user
、そのようになりThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
ます。app.userが「anon」を返すのをどこで読んだか覚えていません。文字列は残念ながら、どのような状況で。
The representation of the current user or null if there is none.
なので、nullになります。カスタムUserInterface
実装が__toString()
匿名のときに呼び出されるメソッドを持っている場合、サードパーティのバンドルは文字列を返す可能性があります。
{% if not app.user %}