我尝试了 symfony 食谱并特别尝试了安全章节。我的 security.yml 和 routing.yml 如下:
安全性.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 }
路由.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 ~
是做什么的?