Мой компонент аутентификации работал нормально в течение прошлого года. Я зашел на свой сайт около двух часов назад и внес одно незначительное изменение. Я вышел на эти два часа и, вернувшись примерно полчаса назад, не могу войти на свой сайт. В сообщении об ошибке говорится, что комбинация имени пользователя и пароля неверна. Я подумал, что каким-то образом значения изменились в моей базе данных или что мой браузер автоматически сохранил старый пароль, поэтому на всякий случай я обновил пароль в своей базе данных, указав соответствующее хеш-значение 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
Авторизация CakePHP перестала работать ⇐ Php
Кемеровские программисты php общаются здесь
1722379158
Anonymous
Мой компонент аутентификации работал нормально в течение прошлого года. Я зашел на свой сайт около двух часов назад и внес одно незначительное изменение. Я вышел на эти два часа и, вернувшись примерно полчаса назад, не могу войти на свой сайт. В сообщении об ошибке говорится, что комбинация имени пользователя и пароля неверна. Я подумал, что каким-то образом значения изменились в моей базе данных или что мой браузер автоматически сохранил старый пароль, поэтому на всякий случай я обновил пароль в своей базе данных, указав соответствующее хеш-значение md5, и попробовал еще раз в своем браузере. Это все равно не сработало.
Я очистил свой кеш (что я и так делаю довольно часто), потому что мне предлагали это сделать в этом посте, но это тоже помогло не работает (и это не помогло автору этого вопроса). Решение этого человека о том, что он добавил что-то в файл представления, что нарушило соединение с базой данных, ко мне не применимо, поскольку я не менял ни один из файлов представления. Я также не изменил модель пользователя или контроллер приложения. ЕДИНСТВЕННОЕ, что я изменил за время работы ранее, это то, что я отредактировал действие UsersController online(). С тех пор я изменил его обратно. Фактически, я зашел в утилиту резервного копирования своего сайта и восстановил все файлы контроллера и модели до их последней резервной копии, которая была сделана 2 дня назад, когда все работало. По-прежнему не влияет.
Я не могу войти ни в одну из зарегистрированных мной учетных записей. Я даже расшифровал один из паролей в базе данных и попытался войти в систему с этой учетной записью, но это тоже не сработало.
[b]AppController[/b]
//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;
}
[b]UsersController[/b]
// 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 дня назад, поэтому понятия не имею, что может быть причиной этого.
[b]Редактировать 1:[/b] А теперь, на всякий случай, я вернул все файлы просмотра к последним резервным версиям, созданным на этих выходных. Это не устранило проблему.
[b]Изменить 2:[/b] Если я отлаживаю $this->Auth->login, результат пусто. Почему это вдруг стало пустым, если ничего не изменилось?
[b]Изменить 3:[/b] Мое действие UsersController Register() правильно создает нового пользователя и автоматически регистрирует этого пользователя.
[b]UsersController[/b]
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
Подробнее здесь: [url]https://stackoverflow.com/questions/17930561/cakephp-auth-login-stopped-working[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия