警告:

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

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

LDAP组件

4.1版本

LDAP组件

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

安装

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

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

笔记

如果在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组件提供了创建新的Ldap条目、更新甚至删除现有条目的方法:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;欧宝娱乐app下载地址symfony \ component \ ldap \条目;// ......美元的条目=新的入口“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”['sn'=>[“fabpot”],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=ldap美元- >GetEntryManager.();//创建新条目$ EntryManager.- >添加美元的条目);//查找并更新现有条目$查询=ldap美元- >询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');美元的结果=$查询- >执行();美元的条目=美元的结果[0.];美元的条目- >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 \ ldap;欧宝娱乐app下载地址symfony \ component \ ldap \条目;// ......美元的条目=新的入口“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”['sn'=>[“fabpot”],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=ldap美元- >GetEntryManager.();//一次添加多个电子邮件地址$ EntryManager.- >ampplyoperations.美元的条目- >getdn.(),[新的UpdateOperationldap_modify_batch_add.'邮件''[电子邮件受保护]'),新的UpdateOperationldap_modify_batch_add.'邮件''[电子邮件受保护]'),]);

可能的操作类型是ldap_modify_batch_add.ldap_modify_batch_removeldap_modify_batch_remove_all.ldap_modify_batch_replace.。范围$价值一定是空值当使用ldap_modify_batch_remove_all.操作类型。

版本4.2中的新功能:Applicoperations()在Symfony 4.2中引入了方法。欧宝娱乐app下载地址

版本4.1中的新增功能:addattributevalues()removeattributevalues()在Symfony 4.1中引入了方法。欧宝娱乐app下载地址

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