Anonymous
Pathologic
я же говорю - обновляет кто сейчас онлайн
Anonymous
Так ладно, потом залезу в код и гляну. Чую что не могу мысль правильно выразить
Pathologic
обращение к этому файлу происходит раз в 10 минут
Anonymous
Да я понимаю
Pathologic
типа чтобы сессия не закрывалась
Pathologic
ну и вот придумали заодно обновлять инфу про активных пользователей
Anonymous
Я просто чую что можно где-то найти решение как это дело сделать нормальным, что бы не затиралась сессия
Pathologic
да не затирается сессия
Aliaksandr
когда пользователь логинится, то меняется id сессии
Я вас сразу отправил смотреть session_id)) хотя сам честно три часа проторчал в кабинете и админке, но так и не вылетел))
Anonymous
Обновляется id
Pathologic
а если бы не торчал, то максимум через 10 минут обнаружил бы что уже не торчишь в админке
Aliaksandr
Так а что делать, закрыть вкладку с админкой или просто 10 минут ничего не трогать?:)
Pathologic
открываешь админку, потом логинишься веб-пользователем
Pathologic
ну и ждешь, как только отправится запрос к session_keepalive админка закроется (:
Andrey
И через 10 минут до свидания в обоих местах)
Aliaksandr
Завтра попробую
Pathologic
нужно просто изменить способ генерации токена
Aliaksandr
Я просто авторизацией сильно не интересовался, этот запрос когда отправляется вообще и кем?
Pathologic
придумал я как обойти баг
Anonymous
Pathologic
нет, id сессии записывается же менеджеру в профиль
Pathologic
значит от него и нужно делать токен
Anonymous
А теперь вопрос, как его обновить, если токкен сохранён в прогружаются страницу?
Pathologic
так же как и сейчас - никак
Pathologic
он генерируется, когда менеджер залогинился
Aliaksandr
// web users are stored with negative keys $userId = $this->getLoginUserType() == 'manager' ? $this->getLoginUserID() : -$this->getLoginUserID();
Pathologic
ты не туда смотришь
Aliaksandr
Я не то скопировал на телефоне:)
Pathologic
смотри файл manager/media/script/session.js
Pathologic
там все и происходит
Aliaksandr
Т.е. получается, что если перегрузить админку, то сессия с левым id нормально воспримется? Мне кажется это как-то тоже неправильно
Pathologic
так данные в сессии не изменились
Aliaksandr
Мне всегда казалось, что при авторизации в ту же сессию просто дописываются еще параметры и все, без смены сессии
Pathologic
но при логине создается еще кука для автологина
Pathologic
id сессии меняется чтобы снизить вероятность логина по чужой куке
Aliaksandr
По крайней мере после авторизации вебпользователя sessionid у меня не менялся, я бы заметил:)
Pathologic
а чем ты авторизовал?
Aliaksandr
Я за традиции:) WebLoginPE
Aliaksandr
Мне показалось, что к админу просто приписалось еще несколько параметров вебюзера и больше ничего не поменялось
Aliaksandr
Когда разлогинил вебпользователя они же удалились и все
Pathologic
так WebLoginPE не обновляет session_id, вот ты и не заметил
Aliaksandr
Надо завтра еще раз глянуть, но вроде session id я сверял:)
Aliaksandr
так WebLoginPE не обновляет session_id, вот ты и не заметил
Так может потому меня и не выкидывало:)
Pathologic
да
Aliaksandr
А формлистер меняет?
Aliaksandr
Авторизация в админке вроде тоже не меняет
Pathologic
modUsers меняет
Pathologic
авторизация в админке тоже меняет
Aliaksandr
А почему менеджер тогда сразу не разлогинивается, если сменился id сессии
Pathologic
потому что данные в сессии не меняются при смене id
Aliaksandr
Всю жизнь думал, что session_start привязан к уникальному session_id
Aliaksandr
И для разных id будут разные параметры в $_SESSION
Pathologic
к session_name он привязан
Aliaksandr
Так это ж вроде просто имя куки, в которой хранится session id
Aliaksandr
В общем далековат я от авторизаций:)
Aliaksandr
Не понимаю, почему при смене id не сбрасывается сессия:)
Aliaksandr
Так что лучше осмыслите весь этот процесс еще раз перед тем, как обходить:)
Pathologic
http://php.net/manual/ru/function.session-regenerate-id.php
Anonymous
Не понимаю зачем обновлять session_id при авторизации
Anonymous
Зачем, а не как
Pathologic
чтобы при автологине можно было сравнить session_id в куке со значением в базе
Anonymous
Ок и вот мы сравнили до, что оно уже есть и пишем в ту же сессию, а не обновляем. В чём проблема так сделать?
Anonymous
Дыры в безопасности я пока не вижу
Pathologic
автологин происходит когда "той" сесии уже нет
Pathologic
если session_id у пользователя в базе не обновлять, то можно взять его куку и зайти автологином
Pathologic
а когда session_id меняется, то шанс такого трюка падает
Anonymous
Ну это да, но почему бы не использовать просто проверку и обновлять сразу для всех
Aliaksandr
Так то автологин. А если сессия уже есть
Pathologic
тогда у всех не будет автологина
Anonymous
Понял где косяк
Pathologic
при логине пользователя обновляется session_id
Pathologic
и сохраняется ему в базу
Anonymous
Нужно в том файле не токен из гета проверять, а session_id с базой
Pathologic
ну так я так и исправил
Pathologic
на самом деле можно было бы просто какую-нибудь случайную хрень записывать вместо session_id
Anonymous
Осталось эту правку пропихнуть в 1.4.1
Anonymous
А то вдруг Дима сдвинет в 1.5