CakePHP auth controllername

时间:2015-10-02 10:02:42

标签: cakephp

我有以下Auth组件:

@AdditionalCriteria("this.deleted = false")

如您所见,我想使用我的控制器“Veranstalter”(我必须使用非英语单词)

当我想登录时, 无法找到Controller Veranstalter s 控制器。

我该如何解决这个问题?

我的表格如下:

public $components = array(
        'Auth' => array(
            'loginAction' => array(
                'controller' => 'Veranstalter',
                'action' => 'login',
            ),
            'authenticate' => array(
                'Form' => array(
                    'userModel' => 'Veranstalter',
                    'fields' => array(
                        'ID' => 'ID', //Default is 'username' in the userModel
                        'Password' => 'Passwort'  //Default is 'password' in the userModel
                    )
                )
            )
        )
    );

1 个答案:

答案 0 :(得分:2)

网址错误

auth组件使用loginAction配置变量exactly as configured

protected function _unauthenticated(Controller $controller) {
    ...
    $controller->redirect($this->loginAction);

因此,逻辑上,如果您查看的网址不是Auth组件配置中的网址,则不负责。

表单操作错误

登录表单的代码:

echo $this->Form->create('Veranstalter', array('action' => 'login')); 

将生成此标记:

<form ... action="/veranstalters/login">
                               ^

因为that's how Form::create works。第一个参数是模型的名称,如果选项中未指定网址,则the model name is inflected to know the name of the controller

因此,最简单的解决方案是在表单选项中指定URL:

echo $this->Form->create('Veranstalter', array('url' => '/veranstalter/login')); 

这将生成正确的网址:

<form ... action="/veranstalter/login">
                              ^