ASP Classic和JavaScript检查会话状态

我需要一些帮助,试图弄清楚如何检查用户会话并查看他们是否仍然登录。

问题是因为我有一个静态页面,几乎使用jquery将所有内容加载到“选项卡”中。 因此,当用户导航页面时,它实际上永远不会离开他们开始的相同页面。 在他们点击更新他们的个人资料或诸如此类的信息时,试图确定他们是否仍然登录时提示我的问题。

当用户“浏览页面”时,与服务器建立一些任意通信。 例如,当他们点击“标签”时,尽管它不需要从服务器使用AJAX来ping服务器。

当然,实际上你会想要检查会话是否正常,因为所有用户都可以在实际按下它之前一小时盯着“更新”按钮。

你需要其他人,你会惹恼那些忙着使用你的应用程序的用户,然后发现他们无论如何都会超时,这将违背他们在其他网站上的体验。

在ASP中,您将在Session对象中存储一些内容以指示用户已登录。 以下是“我登录后”页面的示例: –

 <% Response.ContentType = "application/json" If Session("LoggedOn") Then Response.Write "{loggedOn: true}" Else Response.Write "{loggedOn: false}" End If %> 

现在您可以将此页面用作ping目标。 在更新之前Ping。 如果注销我会建议你发布更新到服务器的详细信息,但不要对更新进行操作。 通过重定向到页面然后操作这些详细信息,以通常的方式请求用户loggon。

我建议你采取稍微不同的方法。

设计服务器端数据处理例程以返回特殊状态,例如,如果用户不再登录,则返回HTTP状态401。

然后使您的客户端AJAX例程能够处理此问题,即打开/显示您的登录屏幕,最好不会丢失尝试操作的数据/上下文。

 YourStaticPage.aspx <% Session("username")="StealthRT" Session("email")="StealthRT@stackoverflowusers.com" Session("userid")=1 Session("LastPageLoad")=System.DateTime.Now %> 

当您处理“更新配置文件”页面的button_click事件时,您应该能够检查这些变量是否仍存储在Session.Contents(“username”)或Session.Contents(“LastPageLoad”)等中。