繁体   English   中英

当用户未在zend Framework 2中登录时,如何限制用户访问所有控制器和操作,但无法登录页面

[英]how to restrict user from all controllers and actions but login page when he is not loggedin in zend framework 2

如果未登录zend Framework 2,我该如何简单地阻止用户访问任何控制器或方法。

<?php
namespace Application\Controller;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;
use Zend\Session\Container;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Sql\Select;
class IndexController extends AbstractActionController {
public function loginAction(){
      if ($this->getRequest()->isPost()) {            
        $request=$this->getRequest();
        $login_email=$request->getPost('login_email');
        $login_password=md5($request->getPost('login_password'));

     $adapter=$this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
     $QUERY="query to be executed";
    $user=$adapter->query($QUERY, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);

if($user->count()){
$result = $user->current();
if(!empty($result))
{
$user_session = new Container('user');
foreach($user->current() as $u=>$v)$user_session->offsetSet($u,$v);
return $this->redirect()->toRoute('application/default', array('action'=>'memberbasic','controller' => 'account'));                    
}
}else{
return $this->redirect()->toRoute('application/default', array(
'action' => 'index','controller' => 'index'));                
}
}
}
}
?>

我是zend framework的新手。 我可以从父控制器扩展所有控制器,也可以将会话添加到布局,这样,如果设置了会话,则用户可以看到仪表板,否则可以登录页面,或者在zend框架中可以这样做。 谢谢您的帮助。

帮自己一个忙,不要从父控制器延伸出去。 控制器层次结构将成为未来的噩梦。

至于限制访问,您将需要对ZF2事件之一进行检查(该事件取决于您和您的应用程序,但是onRoute,onDispatch或onResult在这种情况下非常流行)

如果您正在寻找做类似事情的软件包,请浏览https://github.com/ZF-Commons/zfc-rbac以获得灵感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM