Cakephp管理路由阻塞常规用户


Cakephp admin routing Blocking Regular user

学校的一个课程是CakePHP课程,有一个问题没有人能回答,这是阻止用户访问某些内容(如管理页面)的一种方式。我所做的只是在某个index.ctp页面的View中使用一条PHP语句,上面写着如果角色为=1,则显示此HTML,否则显示其他HTML。但事实并非如此。

因此,我设置了管理路由前缀,并在考虑路由的情况下重新烘焙MVC文件,只是不知道如何阻止角色为"1"(即默认值)的用户访问管理前缀页面。也许我错过了什么完全。。。任何见解或教程都将是一个巨大的帮助。

应用程序控制器

class AppController extends Controller {
public $components = array('DebugKit.Toolbar', 'Session', 'Auth');
public function isAuthorized($user) {
        if (empty($this->request->params['prefix'])) {
            return true;
        }
        if($this->request->params['prefix'] == 'admin') {
            return ($user['role'] == '2');
        }
        return false;
}
public function beforeFilter() {
    $this - > set('logged_in', $this - > Auth - > loggedIn());
    $this - > set('current_user', $this - > Auth - > user());
}
}

项目已上载到https://github.com/DavidWGreeley/termmvc/tree/Testing

你必须告诉cake它需要什么类型的授权

当您加载Auth组件时,您必须通知cake它必须在Controller::isAuthorized方法中查找。所以在你的AppController::initialize()方法中做:

 $this->loadComponent('Auth', [
    'authorize' => [
        'Controller'
    ]
)