Авторизация CakePHP перестала работатьPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Авторизация CakePHP перестала работать

Сообщение Anonymous »

Мой компонент аутентификации работал нормально в течение прошлого года. Я зашел на свой сайт около двух часов назад и внес одно незначительное изменение. Я вышел на эти два часа и, вернувшись примерно полчаса назад, не могу войти на свой сайт. В сообщении об ошибке говорится, что комбинация имени пользователя и пароля неверна. Я подумал, что каким-то образом значения изменились в моей базе данных или что мой браузер автоматически сохранил старый пароль, поэтому на всякий случай я обновил пароль в своей базе данных, указав соответствующее хеш-значение md5, и попробовал еще раз в своем браузере. Это все равно не сработало.

Я очистил свой кеш (что я и так делаю довольно часто), потому что мне предлагали это сделать в этом посте, но это тоже помогло не работает (и это не помогло автору этого вопроса). Решение этого человека о том, что он добавил что-то в файл представления, что нарушило соединение с базой данных, ко мне не применимо, поскольку я не менял ни один из файлов представления. Я также не изменил модель пользователя или контроллер приложения. ЕДИНСТВЕННОЕ, что я изменил за время работы ранее, это то, что я отредактировал действие UsersController online(). С тех пор я изменил его обратно. Фактически, я зашел в утилиту резервного копирования своего сайта и восстановил все файлы контроллера и модели до их последней резервной копии, которая была сделана 2 дня назад, когда все работало. По-прежнему не влияет.

Я не могу войти ни в одну из зарегистрированных мной учетных записей. Я даже расшифровал один из паролей в базе данных и попытался войти в систему с этой учетной записью, но это тоже не сработало.

AppController

//I HAVE NOT CHANGED THIS IN SEVERAL MONTHS

public $helpers = array('Form', 'Html', 'Custom', 'Time', 'Js', 'Cache');
public $components = array('CustomPage', 'Session', 'CustomUser',
'Auth' => array(
'autoRedirect' => false,
'loginAction' => array('controller' => 'users', 'action' => 'login', 'prefix' => false, 'admin' => false, 'moderate' => false),
'loginRedirect' => array('prefix' => false, 'admin' => false, 'moderate' => false, 'controller' => 'account', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'index', 'prefix' => false, 'admin' => false, 'moderate' => false),
'authError' => "You can't access that page",
'authorize' => array('Controller')
)
); // components

public function isAuthorized($user) {
return true;
}


UsersController

// DID NOT CHANGE FOLLOWING ACTION

public function login() {
if ($this->Session->read('Auth.User')) {
$this->Session->setFlash('You are already logged in');
$this->redirect(array('controller' => 'account', 'action' => 'index'));
}

$this->layout = "simple";
$this->set('title_for_layout', 'Login');

if ($this->request->is('post')) {
$this->User->UsersOnline->deleteAll(array('UsersOnline.session' => $this->viewVars['session_session']), false);

if ($this->Auth->login()) { // check user is logged in
$this->User->id = $this->Auth->user('id');
$this->User->saveField('last_login', date(Configure::read('Site.date_format'))); // save login time
$this->redirect($this->Auth->redirect()); // redirect to default place
} else {
$this->Session->setFlash('Your username/password combination was incorrect');
}
}
} // end login

// THE FOLLOWING ACTION WAS THE ONLY THING
// THAT WAS CHANGED BUT IT IS NOW BACK TO ORIGINAL VERSION

public function online() {
$page_id = $this->viewVars['page_id'];
$link = $this->viewVars['link'];

// CONTAIN
$this->User->UsersOnline->contain(array(
'User' => array(
'fields' => array(
'User.username', 'User.online'
),
'Avatar' => array(
'fields' => array(
'Avatar.file'
)
)
)
));

if($page_id){
$this->set('users', $this->paginate($this->User->UsersOnline, array('UsersOnline.page_id' => $page_id)));
$this->set('title_for_layout', 'Fans Online');
}
else{
$this->set('title_for_layout', 'Users Online');
$this->set('users', $this->paginate($this->User->UsersOnline));
$this->layout = "default";
}
} // end online action


Моя модель пользователя использует стандартные столбцы «имя пользователя» и «пароль» для аутентификации пользователя.

Я добавил следующий код в действие userController login(), и выведен правильный результат...

$password = md5($this->request->data['User']['password']);

print_r(
$this->User->find('first',
array(
'User.username' => $this->request->data['User']['username'],
'User.password' => $password
)
)
);


Опять же, я восстановил ВСЕ файлы контроллера и модели до их состояния, созданного 2 дня назад, поэтому понятия не имею, что может быть причиной этого.

Редактировать 1: А теперь, на всякий случай, я вернул все файлы просмотра к последним резервным версиям, созданным на этих выходных. Это не устранило проблему.

Изменить 2: Если я отлаживаю $this->Auth->login, результат пусто. Почему это вдруг стало пустым, если ничего не изменилось?

Изменить 3: Мое действие UsersController Register() правильно создает нового пользователя и автоматически регистрирует этого пользователя.

UsersController

public function register() {
if($this->Session->read('Auth.User')) {
$this->Session->setFlash('You are already registered');
$this->redirect(array('controller' => 'account', 'action' => 'index'));
}

$this->layout = "simple";
$this->set('title_for_layout', 'Register');
if ($this->request->is('post')) {
$this->User->create();

if ($this->User->save($this->request->data)) {
$id = $this->User->id;
$this->request->data['User'] = array_merge($this->request->data['User'], array('id' => $id));

if($this->Auth->login($this->request->data['User'])){
$this->Session->setFlash(__('Your account has successfully been created and you have logged in'));
$this->redirect(array('controller' => 'account', 'action' => 'index'));
} // end if account created and successful log in
else{
$this->Session->setFlash(__('Your account has successfully been created but you cannot log in'));
} // end else if account created but not logged in
} else {
$this->Session->setFlash(__('Your account could not be created. Please, try again.'));
} // end else if account cannot be created
} // end if method is post
} // end register


Подробнее здесь: https://stackoverflow.com/questions/179 ... ed-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»