我在htaccess文件中使用AuthLDAPURL
来验证用户身份。有没有办法在用户使用PHP登录后抓取用户的电子邮件地址?
答案 0 :(得分:3)
您可能可以使用AuthLDAPRemoteUserAttribute
。如文档中所述(强调我的):
如果设置了此指令,则为REMOTE_USER环境的值 变量将设置为指定属性的值。使 确保该属性包含在属性列表中 AuthLDAPUrl定义,否则该指令将无效。 该指令(如果存在)优先于 AuthLDAPRemoteUserIsDN。 如果需要,此指令非常有用 人们使用电子邮件地址登录网站,但后端 应用程序需要用户名作为用户标识 。
这与您描述的内容相反,但您可以尝试指定要返回的电子邮件地址字段。
否则,在Apache移交给PHP之后,您可以使用PHP LDAP functions连接到服务器并根据提供的REMOTE_USER
变量查询电子邮件。使用Active Directory这很简单,就像这样(它会因LDAP提供商的不同而不同):
$ldap = ldap_connect('ldap://yourserver'); // use 'ldaps' if you can!
ldap_bind($ldap, 'username', 'password');
$attributes = array('mail');
$search = ldap_search($ldap, 'base_dn', 'search_filter', $attributes);
$data = ldap_get_entries($ldap, $search);
$data
应该是一个带有电子邮件地址的数组。