Я нашел работу вокруг.
Я работаю в ASP.NET
C#
. У меня есть Master Page
для всех страниц сайта, кроме страницы Login
. В Master Page
Sever Page Load event
я получаю Url
ссылающейся страницы и проверяю, содержит ли она корень сайта, если нет, я перенаправляю на страницу Login
и, так как она не имеет Master Page
отображается.
Это работает, если я пытаюсь перейти на страницу с другого сайта или если я ввожу Url
в адресную строку браузера. Поэтому, если вы закроете вкладку и попытаетесь повторно войти с другой вкладки или снова откроете вкладку, даже если файл cookie не был уничтожен, вы не сможете повторно войти на сайт, не пройдя Login
. Это также работает, даже если вы не закрыли вкладку и переходите между разными сайтами на одной вкладке.
Это код
if (Request.UrlReferrer == null || !Request.UrlReferrer.AbsoluteUri.ToString().Contains("root"))
{
Response.Redirect("~/Account/Login.aspx");
}
При навигации по сайту нет проблем, даже если вы откроете ссылку на другую страницу сайта на другую вкладку, которую он открывает.
Если вы хотите быть дополнительно уверены, что можете удалить файл cookie сеанса и аутентификации в этом предложении if
перед перенаправлением на страницу Login
.
Это не будет работать, когда пользователь перешел на другой сайт на той же вкладке и нажмет кнопку браузера back to
, поскольку он работает в кеше и не отправляет запрос на сервер автоматически.
Таким образом, это не уничтожает файл cookie сеанса или аутентификации при закрытии вкладки, но может помочь предотвратить повторный вход на сайт без входа в систему после закрытия вкладки.