У меня есть приложение на основе CakePHP версии 3.2.10. Я совершенно новый в CakePHP, так что извините, если это банальная проблема. В моем приложении я использую CSRF компонент и компонент Auth настроен таким образом:CakePHP не устанавливает cookie и сеанс после смены сервера
$this->loadComponent('Auth', [
'authorize'=> 'Controller',
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
],
'scope' => [
'Users.active' => 1,
]
]
],
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
'logoutAction' => [
'controller' => 'Users',
'action' => 'logout'
],
'logoutRedirect' => [
'controller' => 'Pages',
'action' => 'index'
],
'unauthorizedRedirect' => '/', // $this->referer()
]);
и Войти действие, как
public function login()
{
$this->set('title', 'Logowanie');
$this->set('bodyclass', 'main-page');
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
if($user['blocked'] == 0) {
$this->Auth->setUser($user);
if ($this->Auth->user('role') == 'admin')
return $this->redirect(['controller' => 'Admin', 'action' => 'index']);
return $this->redirect($this->Auth->redirectUrl());
}
else{
$this->Flash->error('Konto zostało zablokowane przez administratora serwisu. Skontaktuj się z Biurem Obsługi.');
}
} else $this->Flash->error('Błędne dane logowania. Spróbuj ponownie.');
}
}
Теперь проблема:
Несколько дней назад я изменил сервер, где приложение и после его изменения вход в систему перестает работать. После нажатия кнопки login появляется сообщение CSRF Token cookie. Чтобы проверить, является ли компонент проблемой, я отключил csrf и повторю попытку, затем появляется белый экран, и ничего не происходит, если я обновляю страницу, на которой я не зарегистрирован. Я проверил рабочую версию и нерабочую версию и понял, что Cake не хранит файлы cookie на новый сервер, а на старых - все в порядке, а файлы cookie установлены.
После нескольких исследований я узнал, что не только файлы cookie не работают, но и все сеансы. Я пытаюсь сбросить $ _SEESION, но он показывает что-то только после вызова $ this-> Auth-> setUser ($ user) и нигде больше. Поэтому я смотрю через какое-то решение и считаю, что есть установка в конфигурации/app.php для настройки сеанса:
'Session' => [
'defaults' => 'php',
],
И прочитал, что когда установлено таким образом сеанс хранятся в PHP по умолчанию директории. Поэтому я изменил его на торт (даже сделав сеансы dir в папке tmp и добавив 777 разрешений). Но проблема не была решена. Я понятия не имею, почему он не работает. Я попытался установить cookiePath и другие настройки i Session config, но он все еще не работает.
Я думаю, что это может быть проблема сервера (разрешения). Так мало слов о серверах: старый сервер, на котором все работает, был моим личным сервером (у меня есть полный доступ), новый сервер (или, возможно, виртуальный сервер/хост) находится на одной из хостинговых компаний (home.pl), где у меня почти нет привилегий для настройки.
Я не храним куки сам, поэтому не нужны эти шаги. Для входа в систему я использую систему авторизации cakephp по умолчанию. И любые cookie-файлы не установлены из cakePHP. – Manveru
Так что вам лучше показать нам какой-то код, чтобы мы могли разрешить ваши выпущенные. – Noman
Я даже не знаю, когда в коде лежит моя проблема, и какой код поставить. Но хорошо. Я добавил код действия для входа в систему, где появляется проблема. – Manveru