2013-11-07 1 views
2

Метод аутентификации в объекте пользовательской проверки подлинности никогда не вызывается. Является ли это глифом или я что-то упускаю?cakephp: Пользовательский аутентификационный объект не аутентифицирован

я не получаю ничего в журнале, я просто перенаправлен на пользователей/входа в систему (или один я указал)

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

Не могли бы вы также показать свое действие входа в контроллер? Это очень похоже на то, где находится проблема. – ndm

+0

Ты самый верный сэр. Я ошибочно считал, что аутентификация вызывается всякий раз, когда пользователь, не зарегистрированный в системе, пытается получить доступ к чему-то, что необходимо для авторизации. Но, как вы говорите, это '$ this-> Auth-> login()', который вызывает аутентификацию. Вместо этого я сосредоточусь на 'getUser()' –

ответ

1

Я ошибочно считал, что аутентификация была вызвана всякий раз, когда пользователь, не прошедший проверку, попытался получить доступ к чему-либо, защищенному Auth.

Как РПС отметил аутентификацию вызывается только при выполнении $this->Auth->login()

То, что я пытаюсь выполнить здесь, чтобы войти в систему пользователей через ссылку, но не без гражданства пути. Им не нужно будет предоставлять один и тот же хэш (в моем случае) каждый раз, только один раз. Вместо этого я устанавливаю состояние (сеанс) в методе getUser(), который вызывается каждый раз, когда пользователь пытается получить доступ к защищенному.

Так что, надеюсь, это может помочь любому, у кого есть такая же проблема.

 Смежные вопросы

  • Нет связанных вопросов^_^