Некоторые браузеры не могут войти с Tank Auth

Я использую Tank Auth для аутентификации пользователя. Я использую базу данных для хранения сессий и использую $this->auth->tank_auth->is_logged_in() чтобы проверить, вошел ли пользователь. HMVC также используется, где auth Модуль содержит tank_auth.

Проблема: Кажется, что некоторые браузеры не могут успешно войти на сайт, включая IE8, Chrome 15.0.874.121. Более ранние версии Chrome и IE могут войти в систему. Я сделал след перенаправления и обнаружил, что при входе в систему, пользователь перенаправляется на главную страницу, где проверка is_logged_in() не удается и перенаправляет пользователя обратно на вход обратно. Кто-нибудь знает проблему?

config.php

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

Код контроллера CI

function index() {
    $this->load->module('auth');
    if(!$this->auth->tank_auth->is_logged_in()) {
         redirect('login');
    } 

    $this->load->view('main');

}

2 ответа

Решение

Я видел проблемы с этим раньше, когда он работает только в некоторых браузерах. Я не могу найти ссылку, но я где-то читал, что это проблема с размером varchar useragent в БД. Решение было сделать его больше.

Может быть, это поможет

http://codeigniter.com/forums/viewthread/197101//

Еще одна оговорка - разница во времени между сервером и клиентом. Либо синхронизируйте время между сервером и клиентом, либо установите флажок "запомнить меня"

Другие вопросы по тегам