access_control
の下に自分のブロックがあるとしましょうsecurity.yml
:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
この場合、誰もがページに入ることができhomepage
ますreset-password
。しかし、匿名で認証されたユーザーにのみこれらのページを許可したいと思います。完全に認証されたユーザーは、403 access denied error
またはを取得する必要があり404 page not found
ます。
ドキュメントによると、allow_if
I should be ablo to create role expressions to define access. しかし、私がこのようにすると:
access_control:
- { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" }
現在、完全に認証されたユーザー (ログイン済み) はページへのアクセスを許可されるべきではなく、匿名で認証されたユーザーはアクセスできるはずですが、残念ながら、どのユーザーもアクセスできません...
私が見逃しているアイデアはありますか?
アップデート
これにより、正解によって次のように機能するようになりました。
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }