最近,我一直在研究 cake,我看到了 auth 库,据说会负责对您的应用程序的访问控制,但是,您似乎无法初始化甚至使用此 auth 库'不在'UsersController'中,我不想那样,如果它有一些管理部分,我希望URI是管理员/登录,或者只是/登录,我一直在摸索这个,请帮忙。
另一个问题,为什么当我将它放在任何只包含重定向的方法中,甚至在 __construct() 中时,'$this->redirect' 的功能似乎无效?
谢谢大家,希望有人能清楚地向我解释这些事情。
最近,我一直在研究 cake,我看到了 auth 库,据说会负责对您的应用程序的访问控制,但是,您似乎无法初始化甚至使用此 auth 库'不在'UsersController'中,我不想那样,如果它有一些管理部分,我希望URI是管理员/登录,或者只是/登录,我一直在摸索这个,请帮忙。
另一个问题,为什么当我将它放在任何只包含重定向的方法中,甚至在 __construct() 中时,'$this->redirect' 的功能似乎无效?
谢谢大家,希望有人能清楚地向我解释这些事情。
您可以在应用程序的任何控制器中使用 Auth 组件。如果您希望它仅对管理部分有效,那么您可以在应用程序 AppController 中的 beforeFilter 功能中添加条件,以进行 Auth 初始化,例如。
// 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');
}
}
如果您使用的是 cake 2.3.x 或更高版本,请确保您以正确的格式指定了重定向操作,例如。
return $this->redirect('action_name'); // you can also specify the array of parameters.