1

我开始为我的应用程序创建插件,但遇到了一个问题。由于应用程序受 ACL 控制,它似乎也适用于插件。

我希望插件的某些操作只能由注册用户访问,而其他人则对所有人开放。问题是我被重定向到插件.UsersController 的登录操作。我的插件中没有那个控制器。

任何想法如何解决这个问题?

4

1 回答 1

1

数组 url 和 CakePHP 路由

AuthComponent::$loginRedirect是将用户重定向到登录的 url。如果它被定义为一个数组,它将遵循 CakePHP 的正常路由规则,即:

$url = Router::url(array(
    'action' => 'index'
));

这是当前的路由前缀插件和控制器 - 带有动作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();
}
于 2013-08-18T15:46:30.440 回答