我开始为我的应用程序创建插件,但遇到了一个问题。由于应用程序受 ACL 控制,它似乎也适用于插件。
我希望插件的某些操作只能由注册用户访问,而其他人则对所有人开放。问题是我被重定向到插件.UsersController 的登录操作。我的插件中没有那个控制器。
任何想法如何解决这个问题?
AuthComponent::$loginRedirect是将用户重定向到登录的 url。如果它被定义为一个数组,它将遵循 CakePHP 的正常路由规则,即:
$url = Router::url(array(
'action' => '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
因此,要配置身份验证重定向 - 只需确保定义插件和路由前缀:
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();
}