我嘗試了symfony食譜並專門嘗試安全性章節。我security.yml和使用routing.yml如下:Symfony的安全食譜yml示例並不保護防火牆後面的login_check
security.yml:
security:
encoders:
Acme\UserBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: false
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
administrators:
entity: { class: AcmeUserBundle:User, property: email }
firewalls:
login_firewall:
pattern: ^/login
anonymous: ~
register_area:
pattern: ^/register
anonymous: ~
secured_area:
pattern: ^/
anonymous: ~
form_login: ~
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
的routing.yml:
login:
pattern: /login
defaults: { _controller: AcmeUserBundle:Account:login }
login_check:
pattern: /login_check
一切工作正常,除了login_check
說控制器無法找到。這正是陷阱沒有。 3在這裏說: http://symfony.com/doc/current/book/security.html#book-security-common-pitfalls
所以我不知道我做錯了什麼。我知道在Stackoverflow上有類似的問題,但我無法理解他們的解決方案,它不適用於我,謝謝。爲什麼login_check
不在防火牆後面?我認爲它會落後於secured_area
,因爲該模式是^/
,這明顯匹配/login_check
。
我的理解問題:anonymous ~
究竟是做什麼的?
Sry,這與FOSUserBundle無關。我不使用它。 – tester