我有一个使用表单身份验证的asp Web应用程序。我没有使用asp.net会员提供程序,我正在创建自定义身份验证。因此,当用户登录时,我为他创建了一张票和一张cookie,当用户注销时我将其删除。
当用户点击浏览器右上角的关闭按钮时,我遇到了问题。如您所知,这是一个客户端事件,并且没有运行的服务器端事件
我的问题是:
当用户单击关闭按钮以删除票证和cookie时,我该怎么办?
答案 0 :(得分:0)
您应该使用非持久性cookie。您可以通过将false传递给此方法的第二个参数来执行此操作:http://msdn.microsoft.com/en-us/library/twk5762b.aspx
答案 1 :(得分:0)
您可以挂钩“onbeforeunload”DOM事件。您可以采取几种方法
从客户端设置隐藏字段的值并调用__doPostBack('fieldid')。在此字段的值chagned事件的服务器端事件处理程序中,删除票证和您的身份验证令牌。你可以把它变成ajax帖子。我的想法是,即使用户关闭浏览器,您的Web服务器也会被击中,您将删除该令牌。
在同一事件处理程序中,触发Web服务调用以删除身份验证令牌。
答案 2 :(得分:0)
我想你会在用户会话到期或结束后立即删除票证,使用session.Abandon()和服务端的session_end事件。
到目前为止,我担心,我会等到超时使用ASP.NET会话到期机制自行关闭会话。显然你不想依赖它,这就是为什么你需要以某种方式捕获“关闭窗口”事件并向服务器发送信号。
This link可能会帮助您举例说明如何执行此操作。