banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[ASP.net]使用者視窗關閉後,Session立即過期

我們知道 WEB 伺服器的 Session 是與客戶端瀏覽器線程關聯的,如果使用者關閉了瀏覽器,伺服器建立的 Session 物件也將會失效,但是,IIS 在處理 Session 時,預設配置下並不會立即將使用者的 Session 失效,通常需要等待約 1 分鐘的時間,在這 1 分鐘期間,使用者的 Session 資訊仍然存儲在伺服器記憶體中,如果被非法劫持利用的話很容易造成安全問題,所以在某些特定的場合,需要使用者在頁面視窗 / 標籤關閉後立即廢止 Session。

以下是一種簡單的方法:
1. 視窗關閉後立即彈出一個新頁面
2. 新頁面中將 Session 內容廢止

存在的問題:
1. 彈出新視窗的程式碼可能會被瀏覽器禁止,如果不需要彈出新視窗,可以使用 Ajax 向伺服器發送一個請求即可。
2. 如果存在伺服器視窗關閉事件,這部分伺服器程式碼可能不會被執行。

參考程式碼,IE 下測試有效。
前端

testtesttest

後端 ASPX 頁面

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WindowClose.aspx.cs" Inherits="WindowClose" %>
<% Session.Abandon ();%>// 呼叫 Session 失效方法

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。