2012-10-30 19 views
12

Yani, kullanıcı modülde oturumun içinde olup olmadığını kontrol etmek için Module.php'yi nasıl yapılandırabilirim? Eğer değilse, onu sayfadaki sayfaya yönlendirmek istiyorum.Zend Framework 2'deki Module.php, oturumda değilse (eğer giriş yapmamışsa) kullanıcıyı yeniden yönlendirmek için nasıl yapılandırılır?

Oturumda bulunmuyorsa (oturum açmamışsa) kullanıcının başka eylem (denetleyici) kullanmaya devam etmesine izin vermesini istemiyorum.

cevap

9

Bu, ZF2'de daha fazla ayrıntı için yapılmalıdır: click here ayrıca bu kod size yardımcı olabilir. http://pastebin.com/FFGVCpki

public function init() { 
    // Attach Event to EventManager 
    $events = StaticEventManager::getInstance(); 

    // Add event of authentication before dispatch 
    $events->attach ('Zend\Mvc\Controller\AbstractActionController', 'dispatch', array (
      $this, 
      'authPreDispatch' 
    ), 110); 
} 
public function authPreDispatch($event){ 
$target = $event->getTarget(); 
$serviceLocator = $target->getServiceLocator(); 
// Do what ever you want to check the user's identity 
$url = $event->getRouter()->assemble (array (
        "controller" => "<controller>" 
      ), array (
        'name' => '<route name>' 
      )); 
$response = $event->getResponse(); 
     $response->setHeaders ($response->getHeaders()->addHeaderLine ('Location', $url))); 
     $response->setStatusCode (302); 
     $response->sendHeaders(); 
     exit(); 
} 
+2

Modülü'nden yönlendirmek için daha güzel bir yolu var mı. php? ZF'nin dahili yönlendirme mekanizmalarını kullanmadan doğrudan başlık göndermeyi sevmiyorum. –

2

bkz:

$e->getRouteMatch() 
->setParam('controller', 'Application\Controller\Login') 
->setParam('action', 'login'); 
İlgili konular