【问题标题】:Keep LDAP Session保持 LDAP 会话
【发布时间】:2012-11-05 13:00:12
【问题描述】:

在 PHP 中,假设我在第 1 页上有一个 LDAP 连接:

$ldapconn = ldap_connect($ldapserver);
if ($ldapconn) {
      // binding to ldap server
      $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
}
// do stuff here

假设一切顺利并且我能够实际做一些事情,我该如何保存这个绑定,以便当用户点击第二页时,我不需要再次使用他们的用户名/密码执行 ldap_bind。本质上,如果出于安全目的可以避免,我不想将密码存储在会话中,但我想保持连接,以便我可以在其他页面上重复使用它。

【问题讨论】:

  • 您是否只想查询信息?在所述用户上还是您需要重新进行身份验证?
  • 本质上。我将使用我从第 1 页获得的任何凭据查询更多信息。我会提取所有数据,但数据对于 1 次调用来说太大了。

标签: php session ldap bind


【解决方案1】:

PHP LDAP 不支持持久连接。根据您正在执行的 LDAP 查询类型和频率,您始终可以设置一个数据库,以加密状态存储用户名/密码,然后将 ID 保留在会话中的该记录中(不好存储用户名/密码的想法)。类似于here 的回答。如果您扩展您正在尝试做的事情,也许会帮助我们指导您更好地完成它。如果它只是为了验证登录,那么一旦它们通过 LDAP 验证,您就可以在会话中输入一个值,表明它们已经过验证。

【讨论】:

  • 我想我将不得不使用会话 =/ 我希望在初始身份验证后实际获取更多数据。谢谢。
【解决方案2】:

我过去所做的是,如果您可以控制 LDAP 服务器,则拥有一个只有读取权限的“查询”用户。您将其作为全局存储在配置文件或数据库中,并在需要进行简单查询的任何时候与此帐户进行所有绑定,并且仅在初始身份验证时使用用户名和密码。

【讨论】:

    【解决方案3】:

    另一种解决方案不是重新检查他们是否已登录,而是创建一个 cookie 或会话,其中包含一些告诉您用户已登录的字符串。

    然后在新页面上验证该会话是否存在。添加一个超时,这样如果 10 分钟内没有更新,登录的 cookie 就会过期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 2012-05-14
      • 2013-04-13
      相关资源
      最近更新 更多