2012-10-30 2 views
12

그럼, 문제는 모듈에 Module.php를 구성하여 사용자가 세션에 있는지 여부를 확인하는 방법입니다. 그가 아닌 경우 로그인 페이지로 리디렉션하고 싶습니다.Zend Framework 2에서 Module.php를 설정하여 (만약 로그인하지 않았다면) 세션에 없을 경우 사용자를 리디렉션하는 방법은 무엇입니까?

세션에 로그인하지 않은 상태에서 다른 작업 (컨트롤러)을 수행 할 수있는 권한을 사용자에게 부여하지 않으려합니다.

답변

9

자세한 내용은 ZF2의 이벤트와 함께 수행해야합니다. click here도이 코드가 도움이 될 수 있습니다. 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

는 모듈에서 리디렉션하는 더 좋은 방법이 있나요. PHP? ZF의 내부 리디렉션 메커니즘을 사용하지 않고 직접 헤더를 보내는 것을 좋아하지 않습니다. –

2

를 참조하십시오

$e->getRouteMatch() 
->setParam('controller', 'Application\Controller\Login') 
->setParam('action', 'login'); 
관련 문제