簡體   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