我有一个 Drupal 站点和一个 Zend 应用程序。最主要的是 Drupal 站点,其中存储了用户和所有内容。
我希望我的用户在登录 Drupal 时自动登录到 Zend 应用程序。问题是 Drupal 将会话 cookie 更改为一些随机SESS*
的*
(编辑:不是随机的,而是基于协议和域)字符串。
有什么方法可以告诉 Zend 使用这个 cookie 作为会话标识符并自动记录用户?
我有一个 Drupal 站点和一个 Zend 应用程序。最主要的是 Drupal 站点,其中存储了用户和所有内容。
我希望我的用户在登录 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
}