2

这是我的问题:我有一个管理区域,我通过使用 name 和 password 登录来保护它。
当我输入 url 时,我的意思是类似 localhost/admin/area 它重定向到 localhost/user/admin
问题是如果我输入了错误的地址,例如 localhost/admin/545
它会将我带到管理区域和控制器中的错误
这是我的代码:

应用控制器:

function beforeFilter()
{
    $this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>false);
    $this->Auth->authorize = array('Controller');
    if(!isset($this->request->params['prefix']))
    {
       $this->Auth->allow();
    }
    if(isset($this->request->params['prefix']) && $this->request->params['prefix'] == 'admin')
    {    
      $this->layout = 'admin';
    }
}

function isAuthorized($user)
{
    if(!isset($this->request->params['prefix']))
    {
        return true;
    }
}

菜单:

<?php
    $pages = $this->requestAction(array('controller'=>'pages','action'=>'menu','admin'=>false)); ?>
    <a href="/index"><img class="title" src="/img/title.png" alt="studio"></a>
    <ul class="menu">
    <?php foreach($pages as $k => $v): $v = current($v);?>

其余代码是:

登录功能:

function login()
{
    if ($this->request->is('post'))
    {
        if ($this->Auth->login())
        {
            return $this->redirect($this->Auth->redirect());
        } else {
           $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas");
        }
    }
}
4

1 回答 1

0

我认为您可能对 CakePHP 中的 URL 感到困惑。在这里,我将介绍它们是如何工作的。我将假设您已打开管理路由。

localhost/admin/area 这个网址是说带我到控制器中的admin_index方法。area

localhost/admin/545 这个网址是说带我到控制器中的admin_index方法。545

如果控制器不存在,您将获得一个区域。如果您尝试获取特定的 user_id,您可能正在寻找:

localhost/admin/user/view/545

这将尝试将用户路由到控制器中的admin_view方法user并传递 545 user_id。如果用户无权查看此内容,他们将被重定向到登录。

于 2013-01-16T20:07:23.240 回答