2012-08-28 4 views
11

पर बदलें I Zend_Auth के सत्र बैकएंड को बदलने का प्रयास कर रहा हूं। लेकिन यह सफल नहीं हो सका। मेरे bootstrap.php में;

$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); 

यह बिना किसी समस्या के मूल्यों को सफलतापूर्वक सहेज रहा था। मैं इसका परीक्षण करता हूं;

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

अन्य नियंत्रक में;

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

यह ठीक है, लेकिन मैं मेम्कैश में Zend_Auth मान देख सके .. लेकिन अगर मैं var_dump($_SESSION) मैं देख सकता हूँ यह पसंद;

["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 } } } 

यहां आप मेरी लॉगिन विधि देख सकते हैं;

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

ठीक है यह पता चला है कि हमारे वार्निश सर्वर समस्या का कारण हैं। यूआरएल के लिए सरल पाइपिंग इसे ठीक किया गया है। –

+1

मैं सत्र डेटा को memcached में संग्रहीत नहीं करता, इस बात की कोई गारंटी नहीं है कि यह वहां रहता है। –

+1

ठीक है, मैं चिंता देखता हूं, आप इस तरह की समस्या के लिए क्या उपयोग करेंगे? मान लें कि 4 वेब सर्वरों को सत्र डेटा साझा करने की आवश्यकता है .. –

उत्तर

0

मैं अगर यह किसी भी मदद की होगी लेकिन पता नहीं है, Zend_Auth स्वचालित रूप से आप कहीं भी

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

का उपयोग कर अब से पहुँच सकते हैं अगर आप Zend_Auth का उपयोग यह Zend_Auth_Storage_Session का उपयोग करेगा भंडारण बात बनाता है डिफ़ॉल्ट मान "Zend_Auth" Zend_Session_Namespace के रूप में है। अब नामस्थान को बदलने के लिए Zend_Auth_Storage_Session में डिफ़ॉल्ट मान को संशोधित करने के लिए अन्यथा मैन्युअल रूप से ऐसा करें यदि आप इस जानकारी को कैश करना चाहते हैं या इसे कहीं और संग्रहीत करना चाहते हैं तो आप हमेशा इसे एक्सेस कर सकते हैं और जहां चाहें वहां ले जा सकते हैं।

अब मैं आशा व्यक्त की मैं मदद की लेकिन मैं मेम्कैश

0

की anythng पता नहीं है मुझे लगता है कि यह सबसे आसान तरीका है और यह सत्र के लिए Zend फ्रेमवर्क के लिए के लिए आप

प्रिय उपयोग उपयोगकर्ता बाहर काम करेंगे यह क्लास।

ज़ेंड \ सत्र \ कंटेनर का उपयोग करें;

फिर सीजन से मूल्य प्राप्त करने के लिए नीचे प्रक्रिया करें।

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

$ user_session-> इस चर मैं उपयोगकर्ता प्रकार, उपयोगकर्ता ईमेल, उपयोगकर्ता आईडी आदि जैसे उपयोगकर्ता से संबंधित जानकारी के सभी सरणी की दुकान में login_user ... तो मैं इस सत्र मूल्यों प्रत्येक पृष्ठ पर मिलता है ...