如果不在会话中(如果他没有登录),如何在Zend Framework 2中配置Module.php来重定向用户?

ilc*_*lce 12 session bootstrapping zend-framework login

那么,问题是如何在我的模块中配置Module.php来检查用户是否在会话中?如果他不是我想将他重定向到登录页面.

如果用户不在会话中(未登录),我不希望用户有权继续执行其他操作(控制器).

Emr*_*dov 9

这应该通过ZF2中的事件来完成更多细节:点击此处此代码也可以帮助您.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 ();
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有更好的方法从Module.php重定向?我真的不喜欢直接发送标题,而不使用ZF的内部重定向机制. (3认同)