Zend Framework oturum işleme ile başa çıkmak için en iyi yolu

2 Cevap php

Yani Zend çerçevesi içinde başlayan ve bir site çapında "Kullanıcı" oturumunu .... ben kolayca uygulama TÜM modules / denetleyicileri erişebileceğiniz bir şey uygulamak için arıyorum.

Ben kütüphanesinde yeni bir ad yapmak ve benzeri denetleyici, genişletmek gerekir, gibi ben:

class MYCUSTOMLIB_Controller_Action extends Zend_Controller_Action
{
    protected $_userSession;

    function preDispatch(Zend_Controller_Request_Abstract $req)
    {
         $this->_userSession = new Zend_Session_Namespace('user');
    }
}

Ve sonra tüm kontrolörleri / modules / etc olduğunu uzanır mı?

Veya bir tapa ya da ne oluşturmanız gerekir? Nasıl denetleyiciye kullanıcı oturumunu geçmek için bu eklentiyi yapma hakkında gitmek istiyorsunuz?

Yoksa ben bootstrap yapmak mı? Yine nasıl kontrolör geçmek için?

Ayrıca ben Zend_Session_Namespace veya Zend_Http_Cookie kullanmanız gerektiğini ve aynı zamanda nasıl şifrelemek yoktur ve xss çerez temizlemek veya automagically yapılır?

2 Cevap

Ben de bootstrap içinde başlatmak olacaktır:

//Bootstrap.php
protected function _initUserSession()
{
    return new Zend_Session_Namespace('user');
}

Sonra bir eylem yardımcısı kullanmak:

// library/App/Controller/Action/Helper/Session.php
class App_Controller_Action_Helper_Session extends Zend_Controller_Action_Helper_Abstract
{
    function direct()
    {
        return $this->getFrontController()->getParam('userSession');
    }
}

Bu gibi denetleyicisi erişebilirsiniz:

function indexAction()
{
    $session = $this->_helper->session;
}

Siz bootstrap sizin oturumu başlatmak gerekir. Siz Zend_Registry koymak ve bu şekilde erişmek veya denetleyicileri bu-> getInvokeArg $ ('önyükleme') arayarak ön yükleme erişebilirsiniz ya.

// in your controllers    
public function init()
{
    $bootstrap = $this->getInvokeArg('bootstrap');
    $this->_session = $bootstrap->getResource('session');
}