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


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

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

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

9 54

9 ответов:

Session.Abandon()

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

вот немного подробнее о

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

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

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

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

Session.Abandon() уничтожает сеанс и Session_OnEnd событие срабатывает.

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

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

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

выберите файл глобальные.асакс.cs в вашем проекте и добавьте следующий код.

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

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

<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>  

сессии.Очистить();

способ очистки сеанса немного отличается для .NET core. Нет никакого

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