ranio Ответов: 2

Как ограничить несколько сеансов на разных вкладках с одним и тем же url-адресом в одном браузере?


У меня есть приложение, и в нем же я успешно вошел в систему. Тогда мне нужно было бы ограничить пользователя, чтобы он успешно открыл новую вкладку с тем же url-адресом.
я привык развиваться в ASP.NET с помощью C#,

Что я уже пробовал:

Я использую браузер IE 11.

Сеанс активен на разных вкладках одного и того же браузера.

2 Ответов

Рейтинг:
1

MadMyche

Сеанс-это абстракция на стороне сервера, основанная на экземпляре браузера.

Вкладки изолированы друг от друга по соображениям безопасности, и информация не видна другим вкладкам и не доступна серверу.

Что можно сделать, так это использовать javascript "window.name - собственность. Он был разработан больше для открытия новых окон/вкладок, но путем присвоения ему имени после установления соединения. Затем вам нужно будет использовать для проверки window.name перед отображением содержимого.
Прошло уже несколько лет с тех пор, как я работал с этим, и я, к сожалению, не помню код, который я использовал.

Вот доказательство концепции, которая действительно работает в IE - запуск этого из локального файла приведет к появлению предупреждения сценария.

<html>
	<head>
		<title>Test Window Name</title>
		<script type ="text/javascript">window.name="MyWindowsName";</script>
	</head>
	<body>
		<h1>
			The name for this window is:
			<script type ="text/javascript">document.write(window.name);</script>
		</h1>
	</body>
</html>


ranio

мы используем браузер IE. window.name не сработает наа.

MadMyche

Если он не работает для вас в IE, это будет настройка в вашем экземпляре IE. Запустив его из настольного HTML-файла, я действительно получаю предупреждение скрипта из-за того, что он локальный. Я обновил свой ответ с помощью кода proof-of-concept

Рейтинг:
0

Vincent Maverick Durano

Это нормальное поведение, поскольку сеанс основан на экземпляре браузера и всех вкладках внутри экземпляра.Кроме того, сеансы хранятся на сервере. Сервер ничего не знает о вкладках браузера клиента и окнах.

Дайте следующие обсуждения прочитать о том, как обойти это:

Как предотвратить совместное использование нескольких окон браузера в одном сеансе asp.net - переполнение стека[^]
.net - обходной путь ASP.NET сеанс, совместно используемый в нескольких вкладках windows - переполнение стека[^]