php – 将Zend_Auth存储后端$_SESSION更改为Memcached

前端之家收集整理的这篇文章主要介绍了php – 将Zend_Auth存储后端$_SESSION更改为Memcached前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图改变Zend_Auth的会话后端.但不能成功.
在我的bootstrap.PHP
  1. $oBackend = new Zend_Cache_Backend_Libmemcached(
  2. array(
  3. 'servers' => $servers,'compression' => false
  4. ) );
  5.  
  6. // configure caching frontend strategy
  7. $oFrontend = new Zend_Cache_Core(
  8. array(
  9. 'caching' => true,'automatic_serialization' => true
  10. ) );
  11.  
  12. // build a caching object
  13. $cache = Zend_Cache::factory( $oFrontend,$oBackend );
  14.  
  15. $saveHandler = new \Application\Auth\Adapter\Memcached();
  16. $saveHandler->setCacher($cache);
  17.  
  18. \Zend_Session::setSaveHandler($saveHandler);

它正在保存值memcache成功没有问题.我测试

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

在其他控制器

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

没关系,但是我不能在memcache中看到Zend_Auth的值.但是如果我的var_dump($_ SESSION)
我可以看到它像

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

在这里可以看到我的登录方式;

  1. public function login($username,$password)
  2. {
  3. if ($username == "" || $password == "")
  4. return false;
  5.  
  6. $adapter = new \Application_Security_Auth_Adapter();
  7.  
  8. $adapter->setIdentity($username);
  9. $adapter->setCredential($password);
  10.  
  11. $auth = \Zend_Auth::getInstance();
  12. $result = $auth->authenticate($adapter);
  13.  
  14. return $result->isValid();
  15. }
我不知道这是否会有任何帮助,但Zend_auth会自动创建您可以从任何地方访问的存储空间
  1. $session = new Zend_Session_Namespace('Zend_Auth');
  2. $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中的默认值,否则,如果要缓存此信息或将其存储在其他位置,您可以手动将其全部移动,并将其移动到所需位置.

现在我希望我帮助,但我不知道任何内存缓存

猜你在找的PHP相关文章