2012-08-28 10 views
11

Zend_Auth oturum arka ucunu değiştirmeye çalışıyorum. Ama bunu başaramadı. Benim bootstrap.php içinde;

$oBackend = new Zend_Cache_Backend_Libmemcached(
     array(
      'servers' => $servers, 
      'compression' => false 
    )); 

    // configure caching frontend strategy 
    $oFrontend = new Zend_Cache_Core(
     array(
      'caching' => true, 
      'automatic_serialization' => true 
     )); 

    // build a caching object 
    $cache = Zend_Cache::factory($oFrontend, $oBackend); 

    $saveHandler = new \Application\Auth\Adapter\Memcached(); 
    $saveHandler->setCacher($cache); 

    \Zend_Session::setSaveHandler($saveHandler); 

Değerler başarıyla memcache ile sorun kaydedildi. Ben test ederim;

$namespace = new Zend_Session_Namespace(); 
    $namespace->name = "Fatih"; 

Diğer denetleyicide;

$ns = new Zend_Session_Namespace(); 
    var_dump($ns->name); 

Sorun değil, ama memcache içinde Zend_Auth değerleri görmek edemedim .. Ama var_dump($_SESSION) görebildiğim eğer ister;

["Zend_Auth"]=> array(1) { ["storage"]=> object(Application_Security_Auth_Storage)#66 (1) { ["_user":protected]=> object(Application_Security_Auth_User)#84 (4) { ["id":protected]=> object(MongoId)#87 (1) { ["$id"]=> string(24) "4fcca6b8c863c79d33000004" } ["username":protected]=> string(5) "admin" ["role":protected]=> string(5) "admin" ["fullname":protected]=> NULL } } } 

Buradan giriş yöntemimi görebilirsiniz;

public function login($username, $password) 
{ 
    if ($username == "" || $password == "") 
     return false; 

    $adapter = new \Application_Security_Auth_Adapter(); 

    $adapter->setIdentity($username); 
    $adapter->setCredential($password); 

    $auth = \Zend_Auth::getInstance(); 
    $result = $auth->authenticate($adapter); 

    return $result->isValid(); 
} 
+1

Ok Vernik sunucularımızın problemin sebebi olduğu ortaya çıktı. URL'ye basit borular sabittir. –

+1

Oturum verilerini memcached'e kaydedemedim, orada kalmanın bir garantisi yok. –

+1

Tamam, endişeyi görüyorum, bu tür bir problem için ne kullanırdınız? 4 web sunucusunun oturum verilerini paylaşması gerektiğini söyleyelim. –

cevap

0
bu herhangi bir yardım olurdu ama eğer bilmiyorum

, Zend_auth otomatik bunu Zend_Auth_Storage_Session kullanacak Zend_Auth kullanırsanız her yerde Şimdi

$session = new Zend_Session_Namespace('Zend_Auth'); 
$session->storage->//here goes your property like user id password etc 

kullanarak erişebileceğiniz depolama şeyi yaratır Zend_Session_Namespace olarak "Zend_Auth" varsayılan değeri. Artık kullanılan ad alanını değiştirmek için Zend_Auth_Storage_Session'daki varsayılan değeri değiştirin, bu bilgiyi önbelleğe almak veya başka bir yerde saklamak istiyorsanız, her zaman el ile yapın ve istediğiniz yere taşıyın.

Şimdi ben yardım ettim ümit ama ben en basit yolu olduğunu düşünüyorum Memcache'ı

0

ait anythng bilmiyorum ve o oturum için Zend Framework için,

Sevgili Kullanım kullanıcı için bu Class hazırlayacağız.

Zend \ Session \ Container;

Daha sonra, Görüntünün Değerleri Alması için aşağıdaki yordamı uygulayın.

$user_session = new Container('user_login'); 
    $loginUser = $user_session->login_user['user_type']; 

$ user_session-> i kullanıcı türüne, kullanıcı e-posta, kullanıcı kimliği vb gibi kullanıcı ilgili tüm bilgileri dizisi depolamak bu değişkendeki login_user ... sonra ben

... her sayfada bu oturumda değerlerini almak
İlgili konular