OnWebLogout
Последнее обновление Oct 13th, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreСобытие: OnWebLogout¶
Вызывается после того, как процессор выхода снял session contexts пользователя во фронтенд-контексте (не mgr). Плагины не меняют уже произошедший выход.
- Служба: 3 - Web Access Service Events
- Group: Security
Параметры события¶
| Имя | Описание |
|---|---|
| & user | Ссылка на объект modUser пользователя. Передано по ссылке |
| userid | Идентификатор пользователя. |
| username | Имя username пользователя. |
| & loginContext | Ключ контекста, в котором происходит выход из системы. Передано по ссылке |
| & addContexts | Дополнительные контексты, в которых также происходит выход из системы. Передано по ссылке |
$modx->getUser() во время OnWebLogout¶
Процессор выхода снимает session contexts до вызова OnWebLogout. Для этого контекста $modx->user->isAuthenticated($loginContext) уже false.
Перед событием процессор не обнуляет и не перезагружает $modx->user. $modx->getUser() берёт закэшированный объект и всё ещё возвращает пользователя, который только что вышел (тот же id). Код с $modx->getUser() (или другие плагины, которые его вызывают) может выглядеть «всё ещё в системе», хотя session context уже снят.
Берите вышедшего пользователя из параметра события $user (или $scriptProperties['user']). Не считайте $modx->getUser() текущим пользователем сессии во время этого события.
Если нужен именно $modx->getUser() в состоянии «разлогинен», сбросьте и перезагрузите после снятия session contexts:
$modx->user = null;
$modx->getUser($loginContext, true);
Тот же процессор для mgr вызывает OnManagerLogout и тоже не обновляет $modx->user. Трекинг в ядре: modxcms/revolution#17015.
Пример¶
Записать в журнал ошибок, кто вышел. Берите $user из события, не $modx->getUser():
<?php
$eventName = $modx->event->name;
switch ($eventName) {
case 'OnWebLogout':
$id = $user->get('id');
$modx->log(
modX::LOG_LEVEL_ERROR,
'Вышел пользователь с id ' . $id . ' из контекста ' . $loginContext
. ' и ещё вот этих ' . print_r($addContexts, true)
);
break;
}
Смотрите также¶
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










