我們知道 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 失效方法