Я новичок в cakephp. Я создаю сайт, там нет иерархии пользователей, есть только администраторы и публичные пользователи. Я хочу запретить публичным пользователям вводить определенную статическую страницу. конечно, страница находится в виде / страницах, поэтому ее вид / pages / adminPanel.ctp. укажите, где я должен указать код, который вы укажете. заранее спасибо
вот моя функция отображения
function __checkLayout($pageName) { //$pageName = ""; $temp = ""; switch ($pageName) { case "home": $temp = "atheer"; break; case "": $temp = "atheer"; break; case "adminpanel": $temp = "adminview"; break; } return $temp; } public function display() { $path = func_get_args(); //$this->layout='atheer'; //$this->layout = Configure::read('layout.'.$page); $count = count($path); if (!$count) { return $this->redirect('/'); } $page = $subpage = $title_for_layout = null; if (!empty($path[0])) { $page = $path[0]; } if (!empty($path[1])) { $subpage = $path[1]; } if (!empty($path[$count - 1])) { $title_for_layout = Inflector::humanize($path[$count - 1]); } $this->layout = $this->__checkLayout($page); $this->set(compact('page', 'subpage', 'title_for_layout')); try { $this->render(implode('/', $path)); } catch (MissingViewException $e) { if (Configure::read('debug')) { throw $e; } throw new NotFoundException(); } }
ok, если это так, посмотрите на это « Разрешить конкретную страницу в CakePHP» ,
Пожалуйста, ознакомьтесь с измененным кодом:
public $allowedPages = array('page1', 'page2'); //here you add allowed pages only public function beforeFilter() { $this->Auth->allow('display'); } function __checkLayout($pageName) { //$pageName = ""; $temp = ""; switch ($pageName) { case "home": $temp = "atheer"; break; case "": $temp = "atheer"; break; case "adminpanel": $temp = "adminview"; break; } return $temp; } public function display() { $path = func_get_args(); //$this->layout='atheer'; //$this->layout = Configure::read('layout.'.$page); $count = count($path); if (!$count) { return $this->redirect('/'); } $page = $subpage = $title_for_layout = null; if (!empty($path[0])) { $page = $path[0]; } if (!empty($path[1])) { $subpage = $path[1]; } if (!empty($path[$count - 1])) { $title_for_layout = Inflector::humanize($path[$count - 1]); } $this->layout = $this->__checkLayout($page); if(!in_array($page, $this->allowedPages) && !$this->Auth->login()) { return $this->redirect('/login'); //here redirects to login page change the path if the path is different } $this->set(compact('page', 'subpage', 'title_for_layout')); try { $this->render(implode('/', $path)); } catch (MissingViewException $e) { if (Configure::read('debug')) { throw $e; } throw new NotFoundException(); } }
Надеюсь, поможет
Вы можете поместить все общедоступные методы в $this->Auth->allow('func1', 'func2'...)
;
Если вы хотите разрешить всем доступным для пользователей методы, используйте $this->Auth->allow('*')
.
См. Документацию