从MSDN和网上大多数资料来看,自动注销时触发Session_End事件有2中方式,一种是Session.Abandon(),另外一种是关闭所有窗口等待Session的timeout过期。前一种是可靠的,不过需要用户手动去执行Logout操作,后者则不那么可靠了,timeout过了基本上就没动静了,随便你怎么等,有人说是Bug,这个我就没有深入研究了。

那么如何实现关闭窗口就自动登出呢,这里有几个地方要注意。
1、在login的时候用到FormsAuthenticationTicket类,参照MSDN的写法:

Code


这里手动将登陆信息写入Cookie中,稍微麻烦一点,注意这里我的timeout时间是1分钟哈。这样下次访问页面的时候会自动转到登录窗口,而不管你上次时候成功。

2、新建一个EndSession.aspx页面,禁用页面缓存,并且里面只有一行代码Session.Abandon(),这个我就不仔细说了。

3、在你的主页面或者Master页面里面加入以下javascript:

Code

 

 

这些就是我从搜集的资料里汇总出的一个方法,也许不适合你,权作抛砖引玉。

注意这里的Session(“ServerBaseURL”)是网站的Root URL,后面加了一个随机数来防止Cache动作。

 

posted on 2009-01-22 15:30  LazzyTiger  阅读(1576)  评论(0编辑  收藏  举报