Cakephp Auth甚至可以在其他控制器中使用吗?

时间:2013-10-11 09:34:33

标签: php cakephp-2.0

最近,我一直在研究蛋糕,我已经看过auth库,据说它会照顾你的应用程序的访问控制,但是,好像,你不能初始化甚至使用这个auth库,当你不在'UsersController'时,我不想要那个,如果它有一些管理部分,我希望URI是管理员/登录,或者只是简单/登录,我一直在挠头这一个,请帮忙。

另一个问题,为什么看起来'$ this->重定向'的功能似乎无效,当我把这个放在任何只包含重定向的方法时,或者甚至在__construct()中? / p> 谢谢你们,希望有人能够清楚地向我解释这些事情。

1 个答案:

答案 0 :(得分:0)

您可以在应用程序的任何控制器中使用Auth组件。如果你想要它只会在admin部分生效,那么你可以在auth初始化的应用程序AppController中的beforeFilter函数中添加条件,如。

// for component initialization.
public $components = array(
    'Auth' => array(
         'authenticate' => array(
            'userModel' => 'Customer', // you can also specify the differnt model instead of user
        'Form' => array(
        'fields' => array('username' => 'email')        
         )
      )
    )
}

你可以在管理路由上绑定它,如

function beforeFilter(){        
    // only works with admin routing.
    if(isset($this->request->params['prefix']) && ($this->request->params['prefix'] == 'admin')){
        $this->Auth->loginRedirect  = array('admin' => true, 'controller' => 'pages', 'action' => 'index');
        $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login', 'admin' => true);
        $this->Auth->loginAction = array('admin' => true, 'controller' => 'customers', 'action' => 'login');
    }
}

如果你正在使用蛋糕2.3.x或更高版本,那么请确保你已经以正确的格式指定了重定向动作,如。

return $this->redirect('action_name'); // you can also specify the array of parameters.