Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Одмин

Проблема с окончанием сессии при входе с другого пользователя

Рекомендованные сообщения

Всем привет, друзья!

 

Ну, наверное, вкратце из заголовка уже стало понятно в чём трабл.

Объясню по-порядку... У меня есть 2 пользователя помимо моей администраторской учетки. Эти 2 пользователя - мои, т.е. принадлежат мне и от них пишу только я (мои мультиаккаунты). Естественно, об этом никто не догадывается. Ну да дело не в этом...

 

Дело в том, что в админке есть замечательный инструмент, называется "Вход". Он находится в профиле каждого пользователя и если нажать на эту кнопку, то админа логинет на форуме под этим пользователем. Тут же можно и писать любые посты от этого юзверя. Но вот незадача...

 

Открыт браузер Opera. Захожу в АЦ - Пользователь N - нажимаю "Вход" - пользователь залогинен - я от него пишу пост. Затем закрываю Оперу (полностью все вкладки и сам браузер). Открываю снова браузер Опера. Открываю вкладку с АЦ - захожу в АЦ - нахожу в списке пользователей другого своего пользователя - нажимаю "Вход" и другим пользователем автоматически залогиниваюсь на форуме. При этом в подвале форума видно, что новый мой юзверь залогинин и активен, а старого разлогинивает. И это видно в подвале. Вот в чем трабл...

 

Хотелось бы, что бы при каждом залогинивании из АЦ или просто залогинивании с форума не разлогинивало другого моего пользователя и он оставался активным в подвале форума!

 

В настройках безопасности в АЦ отключены проверки IP и браузера, поэтому я не понимаю, почему разлогинивает моих пользователей при заходе других моих пользователей...

 

Может есть возможность как-то внести правку в код, чтобы все мои пользователи всегда оставались активными в подвале при залогинивании других моих пользователей на форуме?

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Привязка сессии к IP адресу означает, что эту сессию нельзя будет использовать с другого IP, например если злоумышленник смог утащить идентификатор сессии. Эта настройка также участвует при уничтожении сессии (destroySessions) - при выходе удаляются все сессии с этого ип адреса. То же самое касается и привязки к браузеру (юзер-агенту) кроме destroySessions.

 

Попробуйте авторизироваться из разных браузеров. Либо, прежде чем зайти под другим пользователем, удалите из cookies идентификатор сессии session_id и pass_hash, или все кукисы (в опере: F12 -> Настройка для сайта... -> Cookies).

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

В классе сессий, методе convertGuestToMember, есть еще такой код:

/admin/sources/classes/session/publicSessions.php

 

	/* Delete old sessions */
	$this->_destroySessions( "ip_address='" . $this->_member->ip_address . "' AND id != '{$this->session_id}'" );

При авторизации пользователя он также может удалять другие сессии с этого IP адреса и он не привязан ни к одной настройке. Немного не логично если например пользователи будут висеть за nat-ом с одним IP на всех.

 

Собственно так оно и есть. Этот код при авторизации удаляет все остальные сессии имеющие этот же IP. Как вариант, его можно также прикрепить к настройке проверки IP адреса.

 

Заменить на (два раза):

 

	/* Delete old sessions */
	if( $this->settings['match_ipaddress'] )
	{
		$this->_destroySessions( "ip_address='" . $this->_member->ip_address . "' AND id != '{$this->session_id}'" );
	}

 

АЦ -> Системные настройки -> Настройки безопасности: Учитывать IP адрес пользователя при проверке сессии? - Нет

  • Upvote 3

Поделиться сообщением


Ссылка на сообщение

@siv1987, спасибо большое, теперь работает!!! И я хочу сказать, что теперь функция проверки IP работает полноценно, не так как было заявлено в настройках в АЦ. И этот косяк до сих пор не исправили в тройке...

 

Но осталось несколько вопросов чисто для понимания ситуации...

 

. Правда, немного не логично если например пользователи будут висеть за nat-ом с одним ип на всех.

Вот тут поясните, почему?

 

И ещё вопрос... я так понимаю, при данном решении выше, теперь можно просто закрывать браузер, входить по новой, логиниться на форуме и пользователей с этим же IP разлогинивать на форуме не будет? Я правильно понял?

Поделиться сообщением


Ссылка на сообщение

/* Delete old sessions */

В том файле два '/* Delete old sessions */' - я добавил решение в оба варианта. Правильно?

Поделиться сообщением


Ссылка на сообщение

Да. Один когда пользователь авторизируется на форуме, второй когда выходит.

Поделиться сообщением


Ссылка на сообщение

@siv1987, а позвольте ещё один вопрос по теме. А если зайдет 2 пользователя из сети с одним IP, допустим это одна контора, в которой все сотрудники сидят за разными компьютерами, подключенными к инету, но у каждого из этих сотрудников-юзеров сети один IP? И когда они начнут одновременно юзать форум, их будет разлогинивать или они будут юзать форум как и прежде?

Поделиться сообщением


Ссылка на сообщение

Если не использовать данную правка их будут выбрасывать из учетной записи.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

круто!

 

спасибо за мануал, очень помогли :)

Поделиться сообщением


Ссылка на сообщение

Я тут задам вопрос в продолжении темы.

 

- При закрытии браузера и сразу же его открытии авторизация пропадает, хотя при первой авторизации браузер спрашивал ( сохранять пароль или нет ).

 

- Браузеры разные, пк разные.

- кэш чищен.

 

 

Возникала у кого такая проблема и как была решена ?

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...