2012-11-16 111 views
3

在PHP中,說我有第1頁上的LDAP連接:保持LDAP會話

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

假如一切順利的話,我能夠真正做的東西,我怎麼能拯救這個綁定,這樣當用戶點擊第二頁我不需要再次使用他們的用戶名/密碼做一個ldap_bind。實質上,我不想在會話中存儲密碼,如果出於安全目的可以避免,但我想保持連接,以便我可以在其他頁面上重複使用它。

+0

你想只是查詢信息?在說的用戶或你需要重新認證? – projectxmatt

+0

實質上。我將使用我從第1頁獲得的任何憑據來查詢更多信息。我將提取所有數據,但數據僅適用於一次呼叫。 –

回答

2

PHP LDAP不支持持續連接。根據您正在進行的LDAP查詢的類型和頻率,您可以始終設置一個數據庫,將用戶名/密碼存儲爲加密狀態,然後將該ID保留在會話中的該記錄中(不是一個好主意存儲用戶名/密碼)。類似於回答here。也許如果你擴展你想要做的事情將會幫助我們更好地指導你如何實現它。如果僅僅是驗證登錄,那麼一旦他們對LDAP進行了驗證,您就可以在會話中添加一個值,說明他們已經過驗證。

+0

我想我將不得不使用會話然後= /我期待在初始認證後實際獲取更多數據。謝謝。 –

0

我在過去所做的是,如果您對LDAP服務器的控制權是擁有僅具有讀取權限的「查詢」用戶。您可以將其作爲全局存儲在配置文件或數據庫中,並且只要您需要執行簡單查詢,就可以使用此帳戶進行所有綁定,並且僅在初始身份驗證時使用用戶名和密碼。

+0

我猜你的意思是「閱讀權利」?簡單的滑 – jmgardn2

+0

@ jmgardn2是的,謝謝你:) – projectxmatt

0

另一種解決辦法是不是重新檢查,如果他們登錄創建cookie或會話使用一些字符串,告訴您在用戶登錄。

然後在新網頁只需驗證如果會話存在。如果在10分鐘內未更新,則添加超時以便登錄的cookie過期。