Мы пытались избежать хитов ctrl-n javascript
Забудь об этом. Хотя теоретически вы можете попытаться перехватить события нажатия клавиш для 'n' с помощью модификатора клавиши управления, существует множество других способов открыть новое окно или вкладку, которые могут быть с большей вероятностью использованы, и вы не сможете ловить. Файл-> Новое окно / вкладка, щелчок средней кнопкой мыши или ссылки с нажатой клавишей Shift, средние кнопки назад / вперед, щелчок правой кнопкой мыши, открытие в новом окне, открытие закладки на новой вкладке, двойной щелчок по значку браузера ...
Пользователь уже аутентифицирован, и мы активно используем сеансы.
Само по себе это не должно быть проблемой. Я предполагаю, что вы имеете в виду, что ваше приложение выдает в сеансе все виды специфичных для страницы данных, которых у него не должно быть, и теперь вы обнаруживаете разрывы приложения, когда у вас открыто более одного окна? Ну что ж, сочувствия и счастливого переписывания.
Тем временем все, что вы можете сделать, - это сказать пользователю «пожалуйста, не пытайтесь открыть два окна браузера в одном приложении». Существуют потенциальные способы заставить JavaScript на одной странице заметить, что JavaScript запускается на другой странице в том же домене в одно и то же время, обычно вовлекая использование document.cookie в качестве межстраничного канала связи. Но это также немного хрупко.