首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony FR3DLdapBundle配置和服务

Symfony FR3DLdapBundle配置和服务
EN

Stack Overflow用户
提问于 2016-06-09 11:52:57
回答 1查看 637关注 0票数 0

我正在用Symfony3编写一个测试应用程序,我试图在我的FOSUserBundle上设置LDAP用户身份验证,我已经找到了这个Symfony ldap绑定:FR3DLdapBundle,我遵循了文档,并且‘我认为设置正确’。一旦完成了指定的这里配置,当我刷新页面时,也不会发生任何错误。为了检查是否发生了任何事情,我使用Wireshark来跟踪是否存在LDAP调用/pacage,但是什么也没有。

Security.yml:

代码语言:javascript
复制
security:
    erase_credentials: false

    firewalls:
        main:
            pattern: ^/
            fr3d_ldap:  ~
            form_login:
                always_use_default_target_path: true
                default_target_path: /profile
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
                # if you are using Symfony < 2.8, use the following config instead:
                # csrf_provider: form.csrf_provider

            logout:       true
            anonymous:    true

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        chain_provider:
            chain:
                providers: [fos_userbundle, fr3d_ldapbundle]

        fr3d_ldapbundle:
            id: fr3d_ldap.security.user.provider

        fos_userbundle:
            id: fos_user.user_provider.username


    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

`congig.yml:

代码语言:javascript
复制
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: Test\TestBundle\Entity\User

# app/config/config.yml
fr3d_ldap:
      driver:
          host:                ldap.forumsys.com
  #       port:                389    # Optional
  #       username:            foo    # Optional
  #       password:            bar    # Optional
  #       bindRequiresDn:      true   # Optional
  #       baseDn:              ou=users, dc=host, dc=foo   # Optional
  #       accountFilterFormat: (&(uid=%s)) # Optional. sprintf format %s will be the username
  #       optReferrals:        false  # Optional
  #       useSsl:              true   # Enable SSL negotiation. Optional
  #       useStartTls:         true   # Enable TLS negotiation. Optional
  #       accountCanonicalForm: 3 # ACCTNAME_FORM_BACKSLASH this is only needed if your users have to login with something like HOST\User
  #       accountDomainName: HOST
  #       accountDomainNameShort: HOST # if you use the Backslash form set both to Hostname than the Username will be converted to HOST\User
      user:
          baseDn: ou=users, dc=host, dc=foo
          filter: (&(ObjectClass=Person))
  #       usernameAttribute: uid # Optional
          attributes:          # Specify ldap attributes mapping [ldap attribute, user object method]
  #           - { ldap_attr: uid,  user_method: setUsername } # Default
  #           - { ldap_attr: cn,   user_method: setName }     # Optional

  #           - { ldap_attr: ...,  user_method: ... }         # Optional
  #   service:
  #       user_hydrator: fr3d_ldap.user_hydrator.default # Overrides default user hydrator
  #       ldap_manager: fr3d_ldap.ldap_manager.default   # Overrides default ldap manager`

这个包上的文档很差,但是每个人都建议我google、ldap、Symfony。

问题1.我如何检查或知道发生了什么事情.?

让我们假设它可以工作,然后我创建了一个这样的服务:

代码语言:javascript
复制
`        <!-- LDAP Connection -->
        <service id="test.testldap.ldap_adapter"
                 class="Test\TestBundle\CambioLDAP\LdapAdapter">
            <argument type="service" id="fr3d_ldap.driver"/>
        </service>`

还添加了LdapAdapter:

代码语言:javascript
复制
<?php

namespace Test\TestBundle\CambioLDAP;

use FR3D\LdapBundle\Model\LdapUserInterface;

class LdapAdaptor
{
    private $ldap;

    public function __construct
    (
        LdapUserInterface $userInterface
    ) {
        $this->ldap = $userInterface;
    }
} 

甚至不确定我是否应该使用它,它只给了我两个选项:

代码语言:javascript
复制
getDn
setDN

无论哪种方式,Symfony都给了我这个错误:

代码语言:javascript
复制
The service "test.testldap.ldap_adapter" has a dependency on a non-existent service "fr3d_ldap.driver".

当然,fr3d_ldap.driver是来自config.yml的。

Question2我应该扩展的哪些类

对不起,这个问题的长度很长,但是对于LDAP和这个包来说,Symfony2-3似乎覆盖得很差,那么使用直接的php不是更容易吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 12:49:59

问题1

可以签入控制台的已加载服务列表:

php /console调试:容器/ grep YOUR_SERVICE_ID

也许您的带有服务的xml文件没有加载?签入正在加载哪个服务文件的YourBundle\DependencyInjection\YourBundleExtension文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37725234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档