Я на самом деле понял это, но я не мог найти ничего об этом, пока мозговой штурм с другим разработчиком – прослеживание через основной код, чтобы выяснить, что происходит.
Проблема довольно проста – после обновления с CakePHP v1.3 до v2.5.9 вход (аутентификация) не работает. Но нет сообщения об ошибке, чтобы рассказать вам, почему он не работает.
Как отмечено в Руководстве по миграции M 2.0 :
AuthComponent был полностью рефакторизован для 2.0, это было сделано, чтобы помочь уменьшить путаницу разработчика и разочарование. Кроме того, AuthComponent стал более гибким и расширяемым. Дополнительную информацию можно найти в руководстве « Аутентификация» .
В руководстве по проверке подлинности объясняется все хорошо и хорошо, как вы должны заставить его работать для новой установки, но ничего о том, что вам нужно сделать для переноса.
Дальнейшая проблема заключается в том, что нет никакой ошибки, чтобы рассказать вам, что происходит.
Я скопировал код для UsersController.php -> login
из раздела «Руководство по UsersController.php -> login
подлинности» на « Идентификация пользователей» :
public function login() { if ($this->request->is('post')) { // Important: Use login() without arguments! See warning below. if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); // Prior to 2.3 use // `return $this->redirect($this->Auth->redirect());` } $this->Session->setFlash( __('Username or password is incorrect'), 'default', array(), 'auth' ); } }
В моем AppController.php
меня было следующее:
public $components = array( 'Session', 'P28n', 'Store', 'SiteStore', 'UserAccessLevel', 'Auth' );
Затем в AppController.php -> beforeFilter
:
$this->Auth->authorize = array('Controller'); $this->Auth->loginError = __('Login failed, invalid username or password. Please try again.'); $this->Auth->authError = __('Please log-in.'); $this->Auth->allow('login', 'logout');
Единственное, что я знал, это то, что $this->Auth->login()
возвращает false. Но проблема может быть что угодно.