CakePHP 2.5.7 – Ошибка аутентификации при входе в систему с нестандартным пользователем

При вызове Auth. я пытаюсь использовать модель Account вместо стандартного пользователя Auth. Auth основывает логин на адресе электронной почты и токена.

Когда добавляются учетные записи, они проходят через BlowfishPasswordHasher.

Я просто не могу определить, в какой момент он не может аутентифицироваться при входе в систему.

Насколько я могу судить, я ссылался на Auth чтобы использовать Account вместо User , и использовать адрес электронной почты / токен вместо имени пользователя / пароля везде, где это необходимо.

Есть ли что-то очевидное, что вы можете использовать или добавить дополнительные строки отладки, которые я мог бы попробовать?

Модель счета

 App::uses('AppModel', 'Model'); App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth'); class Account extends AppModel { ... public function beforeSave($options = array()) { if (isset($this->data['Account']['token'])) { $passwordHasher = new BlowfishPasswordHasher(); $this->data['Account']['token'] = $passwordHasher->hash( $this->data['Account']['token'] ); } return true; } } 

Контроллер счетов

 App::uses('AppController', 'Controller'); class AccountsController extends AppController { public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('add'); } public function login() { $this->layout = 'nosidemenu'; #debug($_SESSION); if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__('Invalid username or password, try again debug($this->Auth->login())')); } } } 

Login.ctp

  <?php echo $this->Flash->render('auth'); ?> <?php echo $this->Form->create('Account', array('action' => 'login')); ?> <?php echo $this->Form->input('email', array('class' => 'form-control', 'type' => 'text', 'placeholder' => 'Email')); ?> <?php echo $this->Form->input('token', array('class' => 'form-control', 'type' => 'password', 'placeholder' => 'Password')); ?> <?php echo $this->Form->submit('Submit', array('class' => 'btn btn-primary btn-block btn-flat')); echo $this->Form->end(); ?> 

AppController

 App::uses('Controller', 'Controller'); class AppController extends Controller { public $components = array( 'Session', 'Flash', 'Auth' => array('authenticate' => array('Form' => array( 'userModel' => 'Account', 'passwordHasher' => 'Blowfish', 'fields' => array( 'username' => 'email', 'password' => 'token' ) ) ), 'loginRedirect' => array( 'controller' => 'accounts', 'action' => 'index' ), 'loginAction' => array( 'controller' => 'accounts', 'action' => 'login' ), 'logoutRedirect' => array( 'controller' => 'pages', 'action' => 'index', 'home' ), 'authError' => 'You don\'t have access here.', ), ); public function beforeFilter() { $this->Auth->allow('index', 'view'); $this->Auth->authError = sprintf(__('You are not authorized to access that location %s/%s .',true),$this->name,$this->action); } } 

Кроме того, у меня есть следующие строки отладки в моей функции входа:

РЕДАКТИРОВАТЬ:

Поэтому я играл с некоторыми отладочными строками, я добавил debug($this->data); как в моем AppController beforeFilter (), так и в AccountController login (). Оба экземпляра этой строки отладки сообщают о том же массиве:

 array( 'Account' => array( 'email' => 'user@test.com', 'token' => 'password' ) ) 

Должно ли сообщение отладки в login () выводить хешированный токен? Несмотря на то, что учетные записи добавляются в базу данных с хешированным паролем, не могли ли они хешировать при вызове через login?

Related of "CakePHP 2.5.7 – Ошибка аутентификации при входе в систему с нестандартным пользователем"

Вы должны установить данные в свою модель

 public function login() { $this->layout = 'nosidemenu'; #debug($_SESSION); if ($this->request->is('post')) { /* Passed the request data in $this->Auth->login() */ if ($this->Auth->login($this->request->data)) { return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__('Invalid username or password, try again debug($this->Auth->login())')); } } 

Здесь я получил это отсюда

В 2.x $this->Auth->login($this->request->data) будет регистрировать пользователя с любыми данными, а в 1.3 $this->Auth->login($this->data) попытается сначала идентифицировать пользователя и войти в систему только при успешном завершении.