永远不会调用自定义身份验证对象中的身份验证方法。这是一个问题还是我错过了什么?
我在日志中没有得到任何内容,我只是重定向到用户/登录(或我指定的那个)
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 "LdapAuthorize" was not found但问题是错别字。
答案 0 :(得分:1)
我错误地认为,只要未经身份验证的用户尝试访问受Auth保护的内容,就会调用身份验证。
正如ndm指出的那样,只有在执行$this->Auth->login()
我在这里要做的就是让用户通过链接登录,但不能以无状态方式登录。他们不应该每次只提供相同的哈希(在我的情况下)。相反,我将在getUser()方法中设置状态(会话),每次用户尝试访问受保护的东西时都会调用该方法。
所以希望这可以帮助其他有同样问题的人。