Странная проблема с авторизацией CakePHP для IE (вход не работает)

#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