1
我有一個Drupal站點和一個Zend應用程序。最主要的是Drupal站點,用戶存儲的地方都是&。使用Zend Auth和外部認證機制
我希望我的用戶在登錄Drupal時自動登錄到Zend應用程序。問題在於Drupal將會話cookie更改爲SESS*
,其中*
是一些隨機的(編輯:不是隨機的,但是基於協議和域)字符串。
有什麼辦法可以告訴Zend使用這個cookie作爲會話標識符並自動登錄用戶嗎?
我有一個Drupal站點和一個Zend應用程序。最主要的是Drupal站點,用戶存儲的地方都是&。使用Zend Auth和外部認證機制
我希望我的用戶在登錄Drupal時自動登錄到Zend應用程序。問題在於Drupal將會話cookie更改爲SESS*
,其中*
是一些隨機的(編輯:不是隨機的,但是基於協議和域)字符串。
有什麼辦法可以告訴Zend使用這個cookie作爲會話標識符並自動登錄用戶嗎?
你必須寫自己的驗證適配器:
class YourApp_Auth_Adapter_DrupalBridge implements Zend_Auth_Adapter_Interface
{
/**
* @return Zend_Auth_Result
*/
public function authenticate()
{
// Check if the Drupal session is set by reading the cookie.
// ...
// Read the current user's login into $username.
// ...
// Create the authentication result object.
// Failure
if (null === $username) {
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, null);
}
// Success
return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $username);
}
}
然後處理您的驗證:
$adapter = new YourApp_Auth_Adapter_DrupalBridge();
$result = Zend_Auth::getInstance()->authenticate($adapter);
if ($result->isValid()) {
// User is logged in
}
執行Drupal站點和Zend的應用程序共享相同的URL(包括子域名和端口)? – Florent 2012-08-07 14:42:57
相同的端口是,相同的域名是,不同的子域名。該Cookie雖然設置在整個域中,所以可以從兩個站點訪問。 – 2012-08-07 14:43:55
您可以編寫自己的身份驗證適配器(擴展'Zend_Auth_Adapter_Abstract')。閱讀cookie並處理認證。 – Florent 2012-08-07 14:46:06