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协议的版本
-
加密
-
加密协议:
ssl
,tls
或没有一个
(默认) -
connection_string
-
您可以使用此选项而不是
宿主
而且港口
连接到LDAP服务器 -
optReferrals
- 指定是否自动跟随LDAP服务器返回的引用
-
选项
- 中定义的LDAP服务器选项ConnectionOptions
例如,要连接到一个start-TLS安全的LDAP服务器:
1 2 3 4 5 6
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;$ldap= Ldap::创建(“ext_ldap”, (“主机”=>我的服务器的,“加密”=>“ssl”]);
或者你可以直接指定一个连接字符串:
1 2 3
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;$ldap= Ldap::创建(“ext_ldap”, (“connection_string”=>“ldap: / /我的服务器:636”]);
的bind ()方法使用用户的区别名(DN)和密码验证先前配置的连接:
1 2 3 4
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……$ldap->bind ($dn,$密码);
绑定后(或者如果您在LDAP服务器上启用了匿名身份验证),您可以使用查询()方法:
1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……$查询=$ldap->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);$结果=$查询->execute ();foreach($结果作为$条目) {//对结果做点什么}
缺省情况下,LDAP表项是惰性加载的。如果您希望在一次调用中获取所有条目并对结果数组执行一些操作,则可以使用toArray ()方法:
1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……$查询=$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下载地址\组件\Ldap\Ldap;使用欧宝娱乐app下载地址\组件\Ldap\条目;/ /……$条目=新条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”, (“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));$entryManager=$ldap->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下载地址\组件\Ldap\Ldap;使用欧宝娱乐app下载地址\组件\Ldap\条目;/ /……$条目=新条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”, (“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));$entryManager=$ldap->getEntryManager ();//一次添加多个邮件地址$entryManager->applyOperations ($条目->getDn (), (新UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”,“new1@example.com”),新UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”,“new2@example.com”)));
可能的操作类型包括LDAP_MODIFY_BATCH_ADD
,LDAP_MODIFY_BATCH_REMOVE
,LDAP_MODIFY_BATCH_REMOVE_ALL
,LDAP_MODIFY_BATCH_REPLACE
.参数美元的价值
必须零
当使用LDAP_MODIFY_BATCH_REMOVE_ALL
操作类型。
4.2
的applyOperations ()
方法是在Symfony 4.2中引入的。欧宝娱乐app下载地址
4.1
的addAttributeValues ()
而且removeAttributeValues ()
方法在Symfony 4.1中介绍。欧宝娱乐app下载地址