Проблема logout
Добрый день/вечер/ночь!
На одном из сайтов столкнулся с проблемой: после выхода пользователя (через компонент Office или просто через процессор) сессия данного пользователя сохраняется в неизменном виде. Т.е., например, членство в группе:
Выбить эту информацию в ДАННОМ браузере не удаётся больше никак (очистка кэша, перезагрузка прав, завершение сеансов, чистка куки).
Соответственно, в другом браузере при входе пользователь имеет правильные данные. Но навсегда. Если сменить группу ещё раз, тов двух браузерах будут 2 разные группы и обе не верные.
Мало того, при этом в сессии сидят данные другого пользователя, под которым когда-то входил:
Раньше с пользователями особо не работал, могу чего-то сильно не понимать.
Буду благодарен за помощь!
На одном из сайтов столкнулся с проблемой: после выхода пользователя (через компонент Office или просто через процессор) сессия данного пользователя сохраняется в неизменном виде. Т.е., например, членство в группе:
[modx.user.117.userGroups] => Array ( [0] => 3 )
, в которой данного пользователя уже нет. Выбить эту информацию в ДАННОМ браузере не удаётся больше никак (очистка кэша, перезагрузка прав, завершение сеансов, чистка куки).
Соответственно, в другом браузере при входе пользователь имеет правильные данные. Но навсегда. Если сменить группу ещё раз, тов двух браузерах будут 2 разные группы и обе не верные.
Мало того, при этом в сессии сидят данные другого пользователя, под которым когда-то входил:
[modx.user.74.resourceGroups]
Не могу понять такого поведения. Как полностью «выгнать» пользователя? Как заставить систему обновить его данные при новой авторизации на сайте?Раньше с пользователями особо не работал, могу чего-то сильно не понимать.
Буду благодарен за помощь!
Комментарии: 7
Спасибо, изучаю…
Сергей, ещё раз спасибо.
Перезагрузка данных пользователя решает мою проблему.
Не стоит ли применить данный метод при авторизации? Например в компоненте Office…
Перезагрузка данных пользователя решает мою проблему.
Не стоит ли применить данный метод при авторизации? Например в компоненте Office…
Не думаю, что в этом есть острая необходимость. Ну висят эти данные в сессии, никому не мешают. Когда пользователь повторно логинится, то эти данные обновляются.
Проблема только в том, что изменения данных пользователя не применяются немедленно. Для этого нужно выйти и зайти снова (logout->login).
А чтобы сессии почаще обновлялись, нужно уменьшить её время жизни в настройках (параметр session_gc_maxlifetime). Вот еще тема о борьбе со старыми сессиями.
Проблема только в том, что изменения данных пользователя не применяются немедленно. Для этого нужно выйти и зайти снова (logout->login).
А чтобы сессии почаще обновлялись, нужно уменьшить её время жизни в настройках (параметр session_gc_maxlifetime). Вот еще тема о борьбе со старыми сессиями.
Увы, в этом и проблема: при следующем логине не обновляются данные… В первом сообщении описал странное поведение. Возможно, только у меня на этом сайте, пока не на чем больше проверить. Вход через Office.
Однако, данный метод обновления данных пользователя ОЧЕНЬ потребуется тем, кто работает с группами клиентов. Например скидки. Часто клиенты постоянно висят на сайте и заставлять их выходить — не правильно и часто невозможно…
За ссыль — спасибо!
Однако, данный метод обновления данных пользователя ОЧЕНЬ потребуется тем, кто работает с группами клиентов. Например скидки. Часто клиенты постоянно висят на сайте и заставлять их выходить — не правильно и часто невозможно…
За ссыль — спасибо!
Разгадка здесь.
Когда запрашиваются группы пользователя, их список берется из сессии.
Алексей, попробуйте проверить, применяется ли изменение групп, если в сессии есть только один контекст.
Сейчас для ответа посмотрел modUser и процессор logout, обратил внимание на интересный момент — если после logout не остается контекстов, в которых пользователь залогинен, сессия должна уничтожиться. Если же есть еще контексты, то со списком групп ничего не произойдет.
Когда запрашиваются группы пользователя, их список берется из сессии.
Алексей, попробуйте проверить, применяется ли изменение групп, если в сессии есть только один контекст.
Сейчас для ответа посмотрел modUser и процессор logout, обратил внимание на интересный момент — если после logout не остается контекстов, в которых пользователь залогинен, сессия должна уничтожиться. Если же есть еще контексты, то со списком групп ничего не произойдет.
Часто клиенты постоянно висят на сайте и заставлять их выходить — не правильно и часто невозможно…Абсолютно согласен. Но решения из коробки нет. Это нужно делать своими силами. Ссылку на решение я давал выше. Это не окончательное решение, оно для понимания. Дальше уж сами в зависимости от задачи. Для того, чтобы понять куда это прикручивать советую глянуть в сторону hybridAuth. Там изменения срабатывают немедленно (работает плагин).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.