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 失效方法

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。