CakePHP 1.2:如何锁定给定的控制器,使其不受除管理员以外的任何人的访问


CakePHP 1.2: How do I lock a given controller from access from anyone but admins?

我不是在寻找整个ACO-RO实现。。。我只想使用Auth,并检查用户的角色。。。。

我应该把什么放在哪里,以便简单地拒绝来自给定控制器的用户,除非他们有特定的角色。

我正在尝试使用$this->Auth->authorize='controller';……但我甚至不知道该把它放在哪里??

任何帮助都会很棒!

提前谢谢。

简短的answer:听起来您需要创建和app_controller.php,并将代码放入beforeFilter方法中。`

更长的答案:在应用程序目录中创建一个app_controller.php文件,并将以下代码放入beforeFilter()中。

if (isset($this->params[Configure::read('Routing.admin')])) { //User is trying to access a page using the admin route
    if ($this->Session->check('someSessionVariable')) { //Check user has some session variable set.                 
        // User is accessing an admin page and has permission, do something, or in most cases do nothing.
     } else { //No sessions set for user, redirect to login page.           
        $this->redirect('/yourLoginPage'); //Redirect
    }
}

这并不能替代Auth组件的正确用户,但应该做您需要做的事情。在将其投入生产之前,请确保检查其安全性。