cakephp:自定义身份验证对象身份验证未调用

时间:2013-11-07 15:51:51

标签: cakephp authentication cakephp-2.4

永远不会调用自定义身份验证对象中的身份验证方法。这是一个问题还是我错过了什么?

我在日志中没有得到任何内容,我只是重定向到用户/登录(或我指定的那个)

CakeVersion:2.4.1

<?php
//My custom Auth Class
//Path: app/Controller/Component/Auth/HashAuthenticate.php
App::uses('BaseAuthenticate', 'Controller/Component/Auth');

class HashAuthenticate extends BaseAuthenticate
{
    public function authenticate(CakeRequest $request, CakeResponse $response)
    {
        //Seems to not be called
        CakeLog::write('authenticate');
        debug($this);
        die('gaah');
    }
}

如果我添加方法getUser()(或unauthenticated()),那些会被调用,但至少我知道蛋糕会找到类等等。它只是跳过了身份验证方法。

AppController看起来像这样

<?php
// AppController
App::uses('Controller', 'Controller');
App::uses('HashAuthenticate', 'Controller/Component/Auth'); 

class AppController extends Controller {

    public $helpers = array('Html', 'Form', 'Session');
    public $components =    array('Auth' => array(
        'authenticate' => array('Hash'),
        'authorize'      => array('Controller'),
        )
    );
}

我在这里发现了一个类似的问题:CakePHP 2.x custom "Authentication adapter &quot;LdapAuthorize&quot; was not found但问题是错别字。

1 个答案:

答案 0 :(得分:1)

我错误地认为,只要未经身份验证的用户尝试访问受Auth保护的内容,就会调用身份验证。

正如ndm指出的那样,只有在执行$this->Auth->login()

时才会调用authenticate

我在这里要做的就是让用户通过链接登录,但不能以无状态方式登录。他们不应该每次只提供相同的哈希(在我的情况下)。相反,我将在getUser()方法中设置状态(会话),每次用户尝试访问受保护的东西时都会调用该方法。

所以希望这可以帮助其他有同样问题的人。