我是symfony2 3.0的新手,我试图创建一个登录表单。但是我陷入了security.yml配置,我不知道发生了什么。我一直在谷歌搜索3个小时,但没有运气。希望您能够帮助我。到目前为止,这是我的代码。
security:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
providers:
db_provider:
entity:
class: AppBundle:User
property: username
firewalls:
login_area:
pattern: ^/user/login$
security: false
secured_area:
pattern: ^/admin
anonymous: ~
form_login:
login_path: user/login
check_path: user/login-check
always_use_default_target_path: true
default_target_path: /admin
provider: db_provider
每次我去http://localhost:8000/admin它都会给我这个错误
The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin".
Invalid configuration for path "security.firewalls.secured_area": The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin".
答案 0 :(得分:0)
您的login_check
路径必须由其中一个防火墙覆盖。
firewalls:
login_area:
pattern: ^/admin/user/login$
security: false
secured_area:
pattern: ^/admin
anonymous: ~
form_login:
login_path: /admin/user/login
check_path: /admin/user/login-check
always_use_default_target_path: true
default_target_path: /admin
provider: db_provider
access_control:
- { path: ^/admin/user/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
来自symfony.com docs的注释:
确保您的check_path网址(例如/ login)位于后面 你用于表单登录的防火墙(在这个例子中,单个 防火墙匹配所有URL,包括/ login)。如果/ login不匹配 任何防火墙,你都会收到一个无法找到控制器的路径 “/ login”例外。