にZend_Authはこれだけ、このクラスの1つのインスタンスが存在することができSingleton Patternを実装します。
現在のIDが管理者かユーザーかを区別するには、isAdmin-Flagを使用するか、Zend_Acl_Role_Interfaceをさらに実装することができます。
2つのAuth-Sessions(Adminの場合は1つ)を同時に使用する必要がある場合は、Zend_Authクラスを拡張してセッションのストレージを調整することができます。
<?php
class Zend_Auth_Admin extends Zend_Auth
{
/**
* Returns the persistent storage handler
*
* Session storage is used by default unless a different storage adapter has been set.
*
* @return Zend_Auth_Storage_Interface
*/
public function getStorage()
{
if (null === $this->_storage) {
$namespace = 'Zend_Auth_Admin'; // default is 'Zend_Auth'
/**
* @see Zend_Auth_Storage_Session
*/
require_once 'Zend/Auth/Storage/Session.php';
$this->setStorage(new Zend_Auth_Storage_Session($namespace));
}
return $this->_storage;
}
}
だから、そのgetInstance()
がもたらすであろうように、Zend_Auth_Admin
は、シングルトンの実装を拡張しているため、実際には、ベンジャミン・クレーマーのソリューションは、動作しません
Zend_Auth::getInstance(); // instance for users
Zend_Auth_Admin::getInstance(); // instance for admins
従業員が同時にクライアントとしてログインする必要がなく、ユーザーは1つのタイプとしてしかログインしませんか? – adlawson
ユーザは、両方のログインを同時に使用する必要があります。 – Jens