警告:

您正在浏览文档欧宝体育电话欧宝娱乐app下载地址symfony 5.1这是不再维持了

考虑将项目升级到Symfony 5.2。欧宝娱乐app下载地址

LDAP组件

5.1版本

LDAP组件

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

安装

1
$作曲家需要Symfony / LD欧宝娱乐app下载地址AP

笔记

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

用法

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap类提供了对LDAP服务器进行身份验证和查询的方法。

Ldap班级使用A.欧宝娱乐app下载地址Symfony \ Component \ LDAP \ Adapter \ AdapterInterface与LDAP服务器进行通信。这适配器例如,对于PHP的内置LDAP扩展,可以使用以下选项配置:

宿主
LDAP服务器的IP或主机名
港口
用于访问LDAP服务器的端口
版本
使用LDAP协议的版本
加密
加密协议:SSL.TLS.没有任何(默认)
connection_string
您可以使用此选项而不是宿主港口连接到LDAP服务器
optreferals.
指定是否自动遵循LDAP服务器返回的转介
选项
LDAP服务器定义的选项connectionOptions.

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

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;ldap美元=Ldap::创建'ext_ldap'[“主机”=>'我的服务器''加密'=>'ssl']);

或者您可以直接指定连接字符串:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;ldap美元=Ldap::创建'ext_ldap'['connection_string'=>“ldap: / /我的服务器:636”]);

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

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......ldap美元->捆绑$ dn$密码);

警告

当LDAP服务器允许未经身份绑定的绑定时,空白密码将始终有效。

绑定一旦(或者​​在LDAP服务器上启用了匿名身份验证),您可能会使用的询问()方法:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$查询=ldap美元->询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');$结果=$查询->执行();foreach$结果作为美元的条目{//对结果做点什么}

默认情况下,LDAP表项才延迟加载。如果您希望在单个呼叫中获取所有条目并使用结果数组进行操作,则可以使用toarray()方法:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$查询=ldap美元->询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');$结果=$查询->执行()->Toarray.();//与结果数组做点什么

默认情况下,LDAP查询使用欧宝娱乐app下载地址symfony \ component \ ldap \适配器\ queryInterface :: scope_sub作用域,对应于ldap_scope_subtree.范围ldap_search.功能。你也可以使用范围(与...有关ldap_scope_base.的范围ldap_read) 和范围_one.(与...有关ldap_scope_onelevel.的范围ldap_list.):

欧宝娱乐app下载地址symfony \ component \ ldap \适配器\ queryInterface;$查询=ldap美元->询问'dc 欧宝娱乐app下载地址= symfony,dc = com''...'[“范围”=>queryInterface.::范围_one.]);

创建或更新条目

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

欧宝娱乐app下载地址symfony \ component \ ldap \条目;欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......美元的条目=入口“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”[“锡”=>[“fabpot”],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=ldap美元->GetEntryManager.();//创建新条目$ EntryManager.->添加美元的条目);//查找并更新现有条目$查询=ldap美元->询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');美元的结果=$查询->执行();美元的条目=美元的结果[0.];$ phoneNumber.=美元的条目->getAttribute“phoneNumber”);$ iScontractor.=美元的条目->有点牵引'承包商组合');美元的条目->setAttribute.'电子邮件'['[电子邮件受保护]']);$ 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.->去掉入口'cn =测试用户,dc = sy欧宝娱乐app下载地址mfony,dc = com'));

批量更新

使用条目经理Applicoperations()一次更新多个属性的方法:

欧宝娱乐app下载地址symfony \ component \ ldap \条目;欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......美元的条目=入口“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”[“锡”=>[“fabpot”],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=ldap美元->GetEntryManager.();//一次添加多个电子邮件地址$ EntryManager.->ampplyoperations.美元的条目->getdn.(),[UpdateOperationldap_modify_batch_add.'邮件''[电子邮件受保护]'),UpdateOperationldap_modify_batch_add.'邮件''[电子邮件受保护]'),]);

可能的操作类型是ldap_modify_batch_add.ldap_modify_batch_remove.LDAP_MODIFY_BATCH_REMOVE_ALLldap_modify_batch_replace。范围$价值一定是当使用LDAP_MODIFY_BATCH_REMOVE_ALL操作类型。

这项工作,包括代码样本,是在一个Creative Commons by-SA 3.0执照。