好的,我想我需要亲手操作..
这个问题是上一个问题的后续问题: Symfony2 img/LdapBundle Bad credentials error
我把它拆分为另一个问题。我得到两个与security.yml文件有关的不同问题,如下所述。
我有我的security.yml:
security:
firewalls:
login_firewall:
pattern: ^/login$
anonymous: ~
imag_ldap:
check_path: login_check
login_path: login
csrf_provider: form.csrf_provider
intention: authenticate
provider: ldap
logout:
path: /logout
target: /
restricted_area:
pattern: ^/
#anonymous: ~
providers:
ldap:
id: imag_ldap.security.user.provider
encoders:
IMAG\LdapBundle\User\LdapUser: plaintext
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }
但是我收到以下错误:
LogicException: No authentication listener registered for firewall "restricted_area".
所以我尝试了以下内容:
security:
firewalls:
login_firewall:
pattern: ^/login$
anonymous: ~
imag_ldap:
check_path: login_check
login_path: login
csrf_provider: form.csrf_provider
intention: authenticate
provider: ldap
logout:
path: /logout
target: /
restricted_area:
pattern: ^/
#anonymous: ~
imag_ldap:
check_path: login_check
login_path: login
csrf_provider: form.csrf_provider
intention: authenticate
provider: ldap
logout:
path: /logout
target: /
但这会导致重定向循环。
有人能告诉我如何让它发挥作用吗?我正在尝试使用https://github.com/BorisMorel/LdapBundle ldap包来验证用户..
答案 0 :(得分:2)
根据文档https://github.com/BorisMorel/LdapBundle#configure-securityyml,您应该有一个防火墙pattern: ^/
,其中登录也会存在。
security:
firewalls:
restricted_area:
pattern: ^/
anonymous: ~
imag_ldap:
check_path: login_check
login_path: login
csrf_provider: form.csrf_provider
intention: authenticate
provider: ldap
logout:
path: /logout
target: /
providers:
ldap:
id: imag_ldap.security.user.provider
encoders:
IMAG\LdapBundle\User\LdapUser: plaintext
access_control:
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }
您不需要身份验证的网站,您必须在acces_control
下加入IS_AUTHENTICATED_ANONYMOUSLY
角色。这也适用于dev-enivironment中的分析器和工具栏(实际上对于FOSUserBundle,但我认为这对LdapBundle也很重要)。是的,我知道symfony文档说要专门为^/login$
创建一个匿名防火墙,但是如果bundle支持匿名角色,那么就可以使用acces_control将其排除在上面。
- { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
修改强>: 并且不要忘记从包中导入路由定义而不是自定义它们。见https://github.com/BorisMorel/LdapBundle#import-routing