#internet-explorer #cakephp-1.3
#internet-explorer #cakephp-1.3
Вопрос:
Я столкнулся здесь со странной проблемой.
Я использую CakePHP 1.3.6, а для IE 6-7-8 он не позволяет мне войти в систему. Я использую правильные учетные данные. проверил это с помощью записей в журналах.
Ошибка авторизации не отображается. (Если я использую неправильные учетные данные, тогда отображается ошибка авторизации, но для правильных учетных данных она ничего не показывает : ( )
Я протестировал все возможности с компонентом auth, записав журналы в файл error.log.
Я проверил метод Auth-> user. Он заполняет сеанс аутентификации, но, несмотря на то, что он не перенаправляет меня в нужное место. Я также проверил authLoginurl: он также корректен в журналах.
Я проверил следующие возможности,
1) Изменены некоторые настройки из Core.php
— Для Session.checkAgent установлено значение false — Безопасность.установлен низкий уровень — Session.start установлен в false
2) использовал disableCache () для входа в систему, чтобы избежать кэширования данных для входа в браузере.
3) После выхода из системы я уничтожил сеанс.
Вот код,
Контроллер приложения в beforeFilter :
$this-> Auth-> loginAction = array(‘controller’ => ‘users’, ‘action’ => ‘login’);
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'myaccount');
$this->Auth->userScope = array('User.is_active' => '1', 'User.is_verified' => '1');
//$this->referer();
//auth errors //add it
$this->Auth->loginError = "Invalid username or password";
$this->Auth->authError = "Sorry, you must be logged in to visit these pages";
//logout
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
Пользовательский контроллер beforeFilter () :
функция beforeFilter() {
parent::beforeFilter();
$this->Auth->allow(allowed_actions);
}
Спасибо, Виджай
Комментарии:
1. Подразумевается, но не указано, что вход в систему работает в других браузерах, но не в IE. Это правильно?
2. Вы хотите сказать, войти. Да, вход работает в другом браузере, но не в IE. Его логин не регистрируется. Извините, если есть какая-либо путаница.
3. Вход в систему означает то же самое 🙂
4. хм… но на самом деле это не перенаправляет меня на путь AuthLoginurl … : (
Ответ №1:
У меня была такая же проблема, это было с другой версией cake, но, возможно, это решение поможет.
В конфигурации я создал my_session.php
файл со следующими значениями:
ini_restore('session.referer_check');
ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie'));
ini_set('session.cookie_lifetime', 0);
// Cookie path is now '/' even if you app is within a sub
// directory on the domain
$this->path = '/';
ini_set('session.cookie_path', $this->path);
ini_set('session.cookie_domain', env('HTTP_BASE'));
Важной частью является $this->path
значение, сеансы теперь доступны для всего домена.
В core.php
для сеансов добавьте:
Configure::write('Session.save', 'my_session');
Надеюсь, это поможет!
Комментарии:
1. В моем случае это не решило проблему, она отлично работает в Chrome и Firefox, но не в IE и opera. Эта строка возвращает null в IE и opera: debug($this-> Auth-> user(‘name’)); Я использую cake php 2.3.5 и протестировал его на IE 8 и 10