Я бы попробовал сделать так:
На beforonunlod отправил бы синхронный запрос на сервер, что пользователь каким-либо образом начал выгружать (это может быть обновление по F5, или закрытие вкладки) страницу.
Затем на сервере ставим timeout о том, что пользователь выгрузил. Если через N времени, от пользователя не пришёл запрос на какую-либо страницу приложения, то вызываем для него logout.