2013-04-22 2 views
2

Я новичок в Symfony2 и пытаюсь подключиться к ldap, используя вышеуказанный пакет; однако я продолжаю получать ошибки Bad credentials. Я не могу понять, почему ..Symfony2 img/LdapBundle Ошибка учетных данных

Мой security.yml файл выглядит следующим образом:

security: 
firewalls: 
    restricted_area: 
     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:  /

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 } 

imag_ldap: 
client: 
    host: someip 
    port: 389 
# version: 3 # Optional 
# username: 
# password: 
# network_timeout: 
# referrals_enabled: 
# bind_username_before: 
# skip_roles: 

user: 
    base_dn: dc=some, dc=dom, dc=ain 
# filter: null 
    name_attribute: uid 
# attributes: 

role: 
    base_dn: dc=some, dc=dom, dc=ain 
# filter: null #Optional 
    name_attribute: cn 
    user_attribute: member 
# user_id: [ dn or username ] #Default dn 

моих маршрутов являются следующие:

login: 
    pattern:    /login 
    defaults:    { _controller: IMAGLdapBundle:Default:login } 
    requirements: 
    _method:   GET 

login_check: 
    pattern:    /login_check 

logout: 
    pattern:    /logout 

Я не могу показаться, чтобы проверить, если его на самом деле подключения, но когда я пытаюсь идти к http://domain/app_dev.php/check_login я получаю следующее сообщение об ошибке:

Unable to find the controller for path "/login_check". Maybe you forgot to add the matching route in your routing configuration?

Я предполагаю, что мне нужно добавить маршрут для /login_check, но не уверен. и если да, то как мне назвать соединение ldap?

EDIT

OK Я думаю, что мне нужно рука проведение .. я изменил свое 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".

SO я попробовал следующее:

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:  /

, но это вызывает цикл перенаправления.

Edit 2 Как уже упоминалось в комментариях второй части это отдельный вопрос, который можно найти здесь: Symfony 2 Security.yml redirect loop and LogicException issues

ответ

1

Вы должны поставить login_check за брандмауэром, а также:

firewalls: 
    restricted_area: 
     pattern: ^/ 
     #anonymous: ~ 
    login_firewall: 
         pattern:    ^/login$ 
         anonymous:  ~ 

Кстати, это распространенная ошибка перечисленных в Avoid Common Pitfalls section.

Там что-то подобное, что могло бы помочь вы here.

+0

HI, спасибо за это :) Однако я добавил шаблон '' '^/login $' '' к брандмауэру, но я все равно получаю ту же ошибку. –

+0

Я обновил свой ответ. – Mick

+0

обновил мой вопрос, чтобы показать изменения, которые я сделал, и проблемы –