我开始为我的应用程序创建插件,我遇到了一个问题。由于应用程序是ACL控制的,似乎这也适用于插件。
我希望插件的某些操作只能由注册用户和其他人访问。问题是我被重定向到插件 .UsersController的登录操作。我的插件中没有那个控制器。
任何想法如何解决这个问题?
答案 0 :(得分:1)
AuthComponent::$loginRedirect是将用户重定向到登录的网址。如果它被定义为数组,它将遵循CakePHP的正常路由规则:
$url = Router::url(array(
'action' => 'index'
));
这是当前route-prefix,plugin和控制器 - 行动index
$url = Router::url(array(
'controller' => 'foos',
'action' => 'index'
));
这是当前的前缀和插件 - 控制器foos
和操作index
$url = Router::url(array(
'plugin' => null,
'controller' => 'foos',
'action' => 'index'
));
这是当前前缀 - 没有插件,控制器foos
和操作index
$url = Router::url(array(
'prefix' => null,
'plugin' => null,
'controller' => 'foos',
'action' => 'index'
));
这定义了所有默认值 - 没有路由前缀,没有插件,控制器foos
和操作index
因此,要配置auth重定向 - 只需确保定义插件和路由前缀:
public function beforeFilter() {
$this->Auth->loginRedirect = array(
'prefix' => null,
'plugin' => null,
'controller' => 'users',
'action' => 'login'
);
parent::beforeFilter();
}
或者将其定义为字符串:
public function beforeFilter() {
$this->Auth->loginRedirect = '/users/login';
parent::beforeFilter();
}