Ldap组件

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

Ldap组件

Ldap组件提供了连接Ldap服务器(OpenLDAP或Active Directory)的方法。

安装

1
需要symfony/ldap欧宝娱乐app下载地址

或者,您可以克隆https://github.com/欧宝娱乐app下载地址symfony/ldap存储库。

请注意

如果在Symfony应用程序外部安装此组件,则必须要求欧宝娱乐app下载地址供应商/ autoload.php文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。

使用

Ldap类提供针对LDAP服务器进行身份验证和查询的方法。

Ldap类使用AdapterInterface与LDAP服务器通信。的适配器例如,可以使用以下选项配置PHP的内置LDAP扩展:

宿主
LDAP服务器的IP或主机名
港口
访问LDAP服务器的端口
版本
要使用的LDAP协议的版本
加密
加密协议:ssltls没有一个(默认)
connection_string
您可以使用此选项而不是宿主而且港口连接到LDAP服务器
optReferrals
指定是否自动跟随LDAP服务器返回的引用
选项
中定义的LDAP服务器选项ConnectionOptions

例如,要连接到一个start-TLS安全的LDAP服务器:

1 2 3 4 5 6
使用欧宝娱乐app下载地址组件LdapLdapldap= Ldap::创建(“ext_ldap”, (“主机”=>我的服务器的“加密”=>“ssl”]);

或者你可以直接指定一个连接字符串:

1 2 3
使用欧宝娱乐app下载地址组件LdapLdapldap= Ldap::创建(“ext_ldap”, (“connection_string”=>“ldap: / /我的服务器:636”]);

bind ()方法使用用户的区别名(DN)和密码验证先前配置的连接:

1 2 3 4
使用欧宝娱乐app下载地址组件LdapLdap/ /……ldap->bind (dn密码);

绑定后(或者如果您在LDAP服务器上启用了匿名身份验证),您可以使用查询()方法:

1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址组件LdapLdap/ /……查询ldap->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”’(& (objectclass =人)(ou =维护者))”);结果查询->execute ();foreach结果作为条目) {//对结果做点什么

缺省情况下,LDAP表项是惰性加载的。如果您希望在一次调用中获取所有条目并对结果数组执行一些操作,则可以使用toArray ()方法:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址组件LdapLdap/ /……查询ldap->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”’(& (objectclass =人)(ou =维护者))”);结果查询->execute ()->toArray ();//对结果数组执行一些操作

创建或更新表项

Ldap组件提供了创建新的Ldap条目、更新甚至删除现有条目的方法:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
使用欧宝娱乐app下载地址组件LdapLdap使用欧宝娱乐app下载地址组件Ldap条目/ /……条目条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”, (“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));entryManagerldap->getEntryManager ();//创建一个新条目entryManager->add (条目);//查找并更新现有条目查询ldap->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”’(& (objectclass =人)(ou =维护者))”);结果查询->execute ();条目结果0];条目->setAttribute (“电子邮件”, (“fabpot@欧宝娱乐app下载地址www.oldmanjams.com”]);entryManager->更新(条目);//向多值属性中添加或删除值比使用update()更有效entryManager->addAttributeValues (条目“telephoneNumber”, (' + 1.111.222.3333 '' + 1.222.333.4444 ']);entryManager->removeAttributeValues (条目“telephoneNumber”, (' + 1.111.222.3333 '' + 1.222.333.4444 ']);//删除现有条目entryManager->remove (条目(“cn =测试用户,dc = sy欧宝娱乐app下载地址mfony, dc = com”));

批处理更新

使用入口管理器applyOperations ()方法一次更新多个属性:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址组件LdapLdap使用欧宝娱乐app下载地址组件Ldap条目/ /……条目条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”, (“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));entryManagerldap->getEntryManager ();//一次添加多个邮件地址entryManager->applyOperations (条目->getDn (), (UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”“new1@example.com”),UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”“new2@example.com”)));

可能的操作类型包括LDAP_MODIFY_BATCH_ADDLDAP_MODIFY_BATCH_REMOVELDAP_MODIFY_BATCH_REMOVE_ALLLDAP_MODIFY_BATCH_REPLACE.参数美元的价值必须当使用LDAP_MODIFY_BATCH_REMOVE_ALL操作类型。

4.2

applyOperations ()方法是在Symfony 4.2中引入的。欧宝娱乐app下载地址

4.1

addAttributeValues ()而且removeAttributeValues ()方法在Symfony 4.1中介绍。欧宝娱乐app下载地址

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。