[英]Get all modules, controllers and actions from a Zend Framework application
[英]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.