Одмин Posted April 22, 2015 Share Posted April 22, 2015 Всем привет, друзья! Ну, наверное, вкратце из заголовка уже стало понятно в чём трабл.Объясню по-порядку... У меня есть 2 пользователя помимо моей администраторской учетки. Эти 2 пользователя - мои, т.е. принадлежат мне и от них пишу только я (мои мультиаккаунты). Естественно, об этом никто не догадывается. Ну да дело не в этом... Дело в том, что в админке есть замечательный инструмент, называется "Вход". Он находится в профиле каждого пользователя и если нажать на эту кнопку, то админа логинет на форуме под этим пользователем. Тут же можно и писать любые посты от этого юзверя. Но вот незадача... Открыт браузер Opera. Захожу в АЦ - Пользователь N - нажимаю "Вход" - пользователь залогинен - я от него пишу пост. Затем закрываю Оперу (полностью все вкладки и сам браузер). Открываю снова браузер Опера. Открываю вкладку с АЦ - захожу в АЦ - нахожу в списке пользователей другого своего пользователя - нажимаю "Вход" и другим пользователем автоматически залогиниваюсь на форуме. При этом в подвале форума видно, что новый мой юзверь залогинин и активен, а старого разлогинивает. И это видно в подвале. Вот в чем трабл... Хотелось бы, что бы при каждом залогинивании из АЦ или просто залогинивании с форума не разлогинивало другого моего пользователя и он оставался активным в подвале форума! В настройках безопасности в АЦ отключены проверки IP и браузера, поэтому я не понимаю, почему разлогинивает моих пользователей при заходе других моих пользователей... Может есть возможность как-то внести правку в код, чтобы все мои пользователи всегда оставались активными в подвале при залогинивании других моих пользователей на форуме? 1 Link to comment Share on other sites More sharing options...
siv1987 Posted April 22, 2015 Share Posted April 22, 2015 Привязка сессии к IP адресу означает, что эту сессию нельзя будет использовать с другого IP, например если злоумышленник смог утащить идентификатор сессии. Эта настройка также участвует при уничтожении сессии (destroySessions) - при выходе удаляются все сессии с этого ип адреса. То же самое касается и привязки к браузеру (юзер-агенту) кроме destroySessions. Попробуйте авторизироваться из разных браузеров. Либо, прежде чем зайти под другим пользователем, удалите из cookies идентификатор сессии session_id и pass_hash, или все кукисы (в опере: F12 -> Настройка для сайта... -> Cookies). 1 Link to comment Share on other sites More sharing options...
siv1987 Posted April 22, 2015 Share Posted April 22, 2015 В классе сессий, методе 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 адрес пользователя при проверке сессии? - Нет 3 Link to comment Share on other sites More sharing options...
Одмин Posted April 23, 2015 Author Share Posted April 23, 2015 @siv1987, спасибо большое, теперь работает!!! И я хочу сказать, что теперь функция проверки IP работает полноценно, не так как было заявлено в настройках в АЦ. И этот косяк до сих пор не исправили в тройке... Но осталось несколько вопросов чисто для понимания ситуации... . Правда, немного не логично если например пользователи будут висеть за nat-ом с одним ип на всех.Вот тут поясните, почему? И ещё вопрос... я так понимаю, при данном решении выше, теперь можно просто закрывать браузер, входить по новой, логиниться на форуме и пользователей с этим же IP разлогинивать на форуме не будет? Я правильно понял? Link to comment Share on other sites More sharing options...
Одмин Posted April 23, 2015 Author Share Posted April 23, 2015 /* Delete old sessions */В том файле два '/* Delete old sessions */' - я добавил решение в оба варианта. Правильно? Link to comment Share on other sites More sharing options...
siv1987 Posted April 23, 2015 Share Posted April 23, 2015 Да. Один когда пользователь авторизируется на форуме, второй когда выходит. Link to comment Share on other sites More sharing options...
Одмин Posted April 23, 2015 Author Share Posted April 23, 2015 @siv1987, а позвольте ещё один вопрос по теме. А если зайдет 2 пользователя из сети с одним IP, допустим это одна контора, в которой все сотрудники сидят за разными компьютерами, подключенными к инету, но у каждого из этих сотрудников-юзеров сети один IP? И когда они начнут одновременно юзать форум, их будет разлогинивать или они будут юзать форум как и прежде? Link to comment Share on other sites More sharing options...
siv1987 Posted April 24, 2015 Share Posted April 24, 2015 Если не использовать данную правка их будут выбрасывать из учетной записи. 1 Link to comment Share on other sites More sharing options...
millenium Posted January 19, 2016 Share Posted January 19, 2016 круто! спасибо за мануал, очень помогли :) Link to comment Share on other sites More sharing options...
millenium Posted January 20, 2016 Share Posted January 20, 2016 Я тут задам вопрос в продолжении темы. - При закрытии браузера и сразу же его открытии авторизация пропадает, хотя при первой авторизации браузер спрашивал ( сохранять пароль или нет ). - Браузеры разные, пк разные.- кэш чищен. Возникала у кого такая проблема и как была решена ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now