插件cakephp应用程序中的ACL

时间:2013-08-17 20:39:34

标签: cakephp acl

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

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

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

1 个答案:

答案 0 :(得分:1)

数组网址和CakePHP路由

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

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

这是当前route-prefixplugin和控制器 - 行动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

因此,要配置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();
}