Странная проблема сakePHP Auth для IE (логин не работает) - PullRequest
4 голосов
/ 29 апреля 2011

Я столкнулся со странной проблемой здесь.

Я использую CakePHP 1.3.6 и для IE 6-7-8 он не позволяет мне войти в систему. Я использую правильные учетные данные. проверил это с записью в логах.

Не отображается никакой ошибки аутентификации. (Если я использую неправильные учетные данные, то это показывает ошибку аутентификации, но для правильных учетных данных это ничего не показывает :()

Я проверил все возможности компонента auth, зарегистрировав журналы в файле error.log.

Я проверил метод Auth-> user. Он заполняет сеанс аутентификации, но не перенаправляет меня в нужное место. Я также проверил authLoginurl: это также правильно в логах.

Я проверил следующие возможности,

1) Изменены некоторые настройки из Core.php

- для Session.checkAgent установлено значение false - Security.level установлен на низкий - для 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);

}

Thnaks, Виджей

1 Ответ

4 голосов
/ 24 мая 2011

У меня была такая же проблема, она была с другой версией торта, но, возможно, это решение поможет.

В конфиге я сделал 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');

Надеюсь, это поможет!

...