Как очистить сеанс при выходе из системы

Я перенаправляю пользователя на страницу входа, когда пользователь нажимает кнопку выхода, однако я не думаю, что это очищает какое-либо приложение или сеанс, потому что все данные сохраняются, когда пользователь снова входит в систему.

В настоящее время на странице входа есть элемент управления входом, а код на странице связан только с аутентификацией входа.

Может ли кто-нибудь направить меня к хорошему руководству или статье об обработке входа и выхода с веб-сайтов ASP.NET?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
61
0
118 802
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Session.Clear ();

Session.Abandon () удаляет сеанс и события. .Clear не все понимает.

JoshYates1980 04.01.2017 22:14
Ответ принят как подходящий
Session.Abandon()

http://msdn.microsoft.com/en-us/library/ms524310.aspx

Вот еще немного подробностей об объекте HttpSessionState:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate_members.aspx

Я пробую Session.Abandon, но он все еще не очищает сеанс.

Jack 06.12.2008 02:14

Происходит что-то странное, потому что Session.Abandon () должен предоставить пользователю новый сеанс. Возможно, у вас другая проблема, если вы найдете больше / лучше данных: опубликуйте их, и я уверен, что сообщество попытается помочь.

Ryan Cook 06.12.2008 05:20

Я бы предпочел Session.Abandon()

Session.Clear() не вызовет срабатывания End, и дальнейшие запросы от клиента не вызовут событие Session Start.

<script runat = "server">  
    protected void Page_Load(object sender, System.EventArgs e) {  
        Session["FavoriteSoftware"] = "Adobe ColdFusion";  
        Label1.Text = "Session read...<br />";  
        Label1.Text += "Favorite Software : " + Session["FavoriteSoftware"];  
        Label1.Text += "<br />SessionID : " + Session.SessionID;  
        Label1.Text += "<br> Now clear the current session data.";  
        Session.Clear();  
        Label1.Text += "<br /><br />SessionID : " + Session.SessionID;  
        Label1.Text += "<br />Favorite Software[after clear]: " + Session["FavoriteSoftware"];  
    }  
</script>  



<html xmlns = "http://www.w3.org/1999/xhtml">  
<head id = "Head1" runat = "server">  
    <title>asp.net session Clear example: how to clear the current session data (remove all the session items)</title>  
</head>  
<body>  
    <form id = "form1" runat = "server">  
    <div>  
        <h2 style = "color:Teal">asp.net session example: Session Clear</h2>  
        <asp:Label   
            ID = "Label1"   
            runat = "server"   
            Font-Size = "Large"  
            ForeColor = "DarkMagenta"  
            >  
        </asp:Label>  
    </div>  
    </form>  
</body>  
</html>  

Session.Abandon() разрушает сеанс, и запускается событие Session_OnEnd.

Session.Clear() просто удаляет все значения (контент) из объекта. session with the same key по-прежнему остается alive.

Итак, если вы используете Session.Abandon(), вы потеряете этот конкретный сеанс, и пользователь получит new session key. Вы можете использовать его, например, когда пользователь logs out.

Используйте Session.Clear(), если вы хотите, чтобы пользователь оставался в том же сеансе (например, если вы не хотите, чтобы он повторно входил в систему), и сбросил все данные, относящиеся к его сеансу.

Я думаю, что это лучший ответ на данный момент.

Geeky Guy 26.12.2016 17:26

Я использую следующее, чтобы очистить сеанс и очистить aspnet_sessionID:

HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

+1 за это: Очень хороший ответ, это единственный чистый способ сделать это. Без установки ASP.NET_SessionId на пустую строку старый идентификатор сеанса все равно будет использоваться (что можно проверить с помощью панели инструментов разработчика F12, Сеть, Подробности). Я пробовал это раньше только с .Clear и .Abandon, но этот третий шаг действительно необходим.

Matt 14.07.2015 13:28

Перейдите в файл Global.asax.cs в своем проекте и добавьте следующий код.

    protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now.AddHours(-1));
        Response.Cache.SetNoStore();
    }

У меня это сработало ..! Ссылка на ссылку Очистить сеанс при выходе из системы MVC 4

Чтобы уточнить, обратите внимание, что этот код НЕ очищает данные сеанса - он только препятствует кэшированию данных веб-браузером пользователя и может иметь последствия для производительности при неосторожном применении.

Oskar Berggren 25.04.2016 05:16

Не для сеанса, только для кеша.

MorgoZ 26.09.2019 16:18

Для ядра .NET способ очистки сеанса немного отличается. Нет функции Abandon().

ASP.NET Core 1.0 или новее

//Removes all entries from the current session, if any. The session cookie is not removed.
HttpContext.Session.Clear()

См. Ссылку на api здесь

.NET Framework 4.5 или новее

//Removes all keys and values from the session-state collection.
HttpContext.Current.Session.Clear(); 

//Cancels the current session.
HttpContext.Current.Session.Abandon();

См. Ссылку на api здесь

session.abandon () не удаляет cookie идентификатора сеанса из браузера. Следовательно, любые новые запросы после этого будут иметь тот же идентификатор сеанса. Следовательно, используйте Response.Cookies.Add (new HttpCookie ("ASP.NET_SessionId", "")); после session.abandon ().

Другие вопросы по теме