Затронуты ли сеансы CI сетью? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть приложение, которое написано в codeigniter.Я использую предоставленную CI библиотеку сессий для целей управления сессиями.Он развертывается в режиме реального времени.

Когда я подключаю приложение к WiFi или локальной сети в своей лабораторной (колледжной) сети, данные сеанса случайным образом сбрасываются.И приложение выходит из системы текущего пользователя.

Но когда я подключаю его к своей точке доступа, она работает нормально.Поэтому я хотел спросить, влияет ли на сеансы тип сети.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

После мониторинга журналов я понял следующие моменты:

  • В библиотеке сеансов есть параметр sess_match_ip
  • Сначала вы должны установить его в false
  • , затем вы должны проверить, выполняется ли следующий цикл в библиотеке сеансов, или

    if ($this->sess_match_ip == TRUE AND $session['ip_address'] != $this->CI>input->ip_address())
    
        {
            $this->sess_destroy();
            return FALSE;
        }
    
  • , если это так, то вам необходимо прокомментироватьвыйти из цикла или полностью удалить этот блок кода.Я знаю, что это не постоянное решение, но оно сработало для меня.

Причина этого заключается в том,

Некоторые сети очень быстро переключают ips, поэтому, если IPв то время, когда создание токена и запрос различаются, сеанс уничтожается в соответствии с указанным кодом.

Спасибо.

0 голосов
/ 26 ноября 2018

Если IP-адрес изменяется , когда вы вошли в систему , и это, по-видимому, приводит к выходу пользователя из системы, возможно, это связано с тем, что сеансы CI можно настроить (или нет), чтобы принудительно привязывать сеансы кIP-адрес.Обратите внимание, что, хотя это легко настраивается, если вы используете драйвер базы данных CI для данных сеанса, вам необходимо изменить таблицу сеансов в зависимости от значения, назначенного этому параметру

application / config / config.php

| 'sess_match_ip'
|
|   Whether to match the user's IP address when reading the session data.
|
|   WARNING: If you're using the database driver, don't forget to update
|            your session table's PRIMARY KEY when changing this setting.

$config['sess_match_ip'] = FALSE;

Назначение FALSE в качестве значения позволит пользователю оставаться в системе даже при изменении IP-адреса.Ваша конфигурация сеанса, вероятно, установлена ​​на TRUE, что означает, что другой IP-адрес клиента приведет к тому, что сеанс больше не будет действительным.

Если вы не используете базу данных в качестве драйвера сеанса, все, что вам нужно сделатьизменить параметр sess_match_ip, и вы настроены.Если вы используете базу данных для сеансов, изменения, которые вам необходимо выполнить, находятся в документации CI здесь:

Библиотека сеансов

В частности, это:

You will also need to add a PRIMARY KEY depending on your ‘sess_match_ip’ setting. The examples below work both on MySQL and PostgreSQL:

// When sess_match_ip = TRUE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address);

// When sess_match_ip = FALSE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);

// To drop a previously created primary key (use when changing the setting)
ALTER TABLE ci_sessions DROP PRIMARY KEY;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...