使用Zend Auth和外部认证机制

时间:2012-08-07 14:38:22

标签: zend-framework drupal zend-auth

我有一个Drupal站点和一个Zend应用程序。最重要的是Drupal站点,用户存储在其中。一切。

我希望我的用户在登录Drupal时自动登录Zend应用程序。问题是Drupal将会话cookie更改为SESS*,其中*是随机的(编辑:不是随机的,但基于协议和域)字符串。

有什么方法可以告诉Zend将此cookie用作会话标识符并自动记录用户?

1 个答案:

答案 0 :(得分:1)

您必须编写自己的身份验证适配器:

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
}