我正在用Symfony3编写一个测试应用程序,我试图在我的FOSUserBundle上设置LDAP用户身份验证,我已经找到了这个Symfony ldap绑定:FR3DLdapBundle,我遵循了文档,并且‘我认为设置正确’。一旦完成了指定的这里配置,当我刷新页面时,也不会发生任何错误。为了检查是否发生了任何事情,我使用Wireshark来跟踪是否存在LDAP调用/pacage,但是什么也没有。
Security.yml:
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:
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.我如何检查或知道发生了什么事情.?
让我们假设它可以工作,然后我创建了一个这样的服务:
` <!-- LDAP Connection -->
<service id="test.testldap.ldap_adapter"
class="Test\TestBundle\CambioLDAP\LdapAdapter">
<argument type="service" id="fr3d_ldap.driver"/>
</service>`还添加了LdapAdapter:
<?php
namespace Test\TestBundle\CambioLDAP;
use FR3D\LdapBundle\Model\LdapUserInterface;
class LdapAdaptor
{
private $ldap;
public function __construct
(
LdapUserInterface $userInterface
) {
$this->ldap = $userInterface;
}
} 甚至不确定我是否应该使用它,它只给了我两个选项:
getDn
setDN无论哪种方式,Symfony都给了我这个错误:
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不是更容易吗?
发布于 2016-06-09 12:49:59
问题1
可以签入控制台的已加载服务列表:
php /console调试:容器/ grep YOUR_SERVICE_ID
也许您的带有服务的xml文件没有加载?签入正在加载哪个服务文件的YourBundle\DependencyInjection\YourBundleExtension文件。
https://stackoverflow.com/questions/37725234
复制相似问题