Javascript 如何从客户端脚本检测身份验证超时

Javascript 如何从客户端脚本检测身份验证超时,javascript,asp.net,forms-authentication,wcf-client,Javascript,Asp.net,Forms Authentication,Wcf Client,我有一个ASP.NET应用程序,它正在使用forms身份验证,超时设置为5分钟。在我的页面上,我有一个按钮,当单击该按钮时,它会对存在于我的.svc文件中名为的服务上的操作进行AJAX调用。我如何从客户端javascipt知道应用程序已超时?或者,我如何在global.asax中检测到这一点;如果您讨论的是会话超时,那么可能在应用程序\u beginrequest?中。发生这种情况时,属性应设置为true 如果您指的是身份验证超时,那么您必须检查AuthenticationTicket是否过期。

我有一个ASP.NET应用程序,它正在使用forms身份验证,超时设置为5分钟。在我的页面上,我有一个按钮,当单击该按钮时,它会对存在于我的.svc文件中名为的服务上的操作进行AJAX调用。我如何从客户端javascipt知道应用程序已超时?或者,我如何在global.asax中检测到这一点;如果您讨论的是会话超时,那么可能在应用程序\u beginrequest?

中。发生这种情况时,属性应设置为true


如果您指的是身份验证超时,那么您必须检查AuthenticationTicket是否过期。

方法的一个变体:使用一个单独的客户端脚本,首先通过请求一个特殊的页面/处理程序来检查身份验证是否过期,该页面/处理程序返回JSON结构以指示当前用户的身份验证状态。只有在知道用户仍然处于活动状态后,才能运行主要的ajax操作。这又是一个请求,但可以避免将超时逻辑与主ajax逻辑纠缠在一起。您还可以在弹出的“警告,您的会话将在x分钟后超时”窗口中单独使用


有关如何设置的更多详细信息,请参见和,但关键的一点是,如果您不想通过检查过期来延长滑动过期,则必须将过期页/处理程序配置为单独的虚拟目录,表单身份验证设置为slidingExpiration=false。

这意味着您需要在用户登录,不计算.Net在未提供时创建的。您将在那时命名票据,因此您应该能够以javascript获取cookie。@Geekyouned,但如果您遵循cookie上的,您将无法通过客户端脚本访问它们。