В моем приложении он не должен позволять пользователю открывать приложение на нескольких вкладках для того же браузера. Мне нужно реализовать это для некоторой цели безопасности. Как я могу это реализовать?Предотвращение открытия пользователем нескольких вкладок для приложения
ответ
Создайте идентификатор сеанса на стороне сервера каждый раз, когда пользователь открывает ваше приложение. Этот идентификатор сеанса должен быть специфичным для браузера, IP, MAC и любых данных, которые вы получаете как часть первоначального запроса. Для каждого последующего запроса проверьте идентификатор сеанса.
Любая ссылка в вашей заявке должна отправить запрос POST, лучше всего отправить форму, а не запрос GET, чтобы он не открывался на другой вкладке.
Если пользователь намеренно открывает приложение на другой вкладке, так как вы знаете, что у вас уже есть идентификатор сеанса, сгенерированный для запрошенных данных, аннулировать ранее сгенерированный идентификатор сеанса, вывести пользователя из системы и уничтожить сеанс.
Проще всего подписаться на уведомление localStorage и затем обновить узел. Поскольку события не отправляются на вкладку обновления, это влияет только на ранее открытые вкладки.
Пример в JQuery:
$(window).on("storage", function(ev) {
if (ev.originalEvent.key == "tabsync") {
window.close(); // will probably not work if the user opened the tab
window.location = "/onetabonlyplease";
}
});
localStorage.setItem("tabsync", Date.now());
Как предотвратить более одного экземпляра приложения сделать ваш сайт более безопасным? Кроме того, как уже было сказано ([здесь] (http://stackoverflow.com/questions/557733/how-to-prevent-a-user-from-having-multiple-instances-of-the-same-web -приложение? rq = 1) и [здесь] (http://stackoverflow.com/questions/8252977/prevent-users-from-opening-multiple-instance-of-same-website?rq=1)): это не хорошая идея, и она не является удобной для пользователя. – Terry