2012-08-28 20 views
11

私は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); 

問題なくmemcacheの値を正常に保存していました。私はそれをテストする。

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

他のコントローラでは、

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

それは大丈夫ですが、私はmemcacheの中にZend_Authの値を参照してくださいcouldntの..しかし、私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

Okワニスサーバが問題の原因であることが判明しました。 URLへの簡単な配管は固定されています。 –

+1

私はmemcachedにセッションデータを保存しませんが、そこにとどまるという保証はありません。 –

+1

私は懸念を見て、あなたはそのような問題のために何を使用しますか?たとえば、4つのWebサーバーがセッションデータを共有する必要があります。 –

答えて

0

これは任意の助けになるかどうかは分かりませんが、Zend_Authには、自動的にあなたはそれがZend_Auth_Storage_Sessionを使用するにZend_Auth使用する場合は、どこにでも今

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

を使用してからアクセスできるためにどのストレージものを作成し、デフォルト値はZend_Session_Namespaceとして "Zend_Auth"です。 Zend_Auth_Storage_Sessionのデフォルト値を変更するには、この名前空間を変更する必要があります。この情報をキャッシュしたい場合や、他の場所に保存したい場合は手動で行います。

セッションのためのZend Frameworkの

各位の使用ユーザーは、このクラスを

は、今私は私が助けた期待したが、私はmemcacheの

0

のanythngを知らない私はそれが最も簡単な方法だと思うと、それはあなたのために動作します。

Zend \ Session \ Containerを使用します。

次に、以下の手順を実行してSeesionsから値を取得します。私は、ユーザーの種類、ユーザーの電子メール、ユーザーIDなどのようなユーザ関連情報のすべての配列を格納し、この変数に

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

$ user_session-> LOGIN_USER ...それから私は、各ページに、このセッションの値を取得します...

関連する問題