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

时间:2012-06-23 11:26:26

标签: javascript asp.net forms-authentication wcf-client

我有一个使用表单身份验证的ASP.NET应用程序,超时设置为五分钟。在我的页面上,我有一个按钮,单击该按钮时,会对我的.svc文件中指定的服务上的操作进行AJAX调用。我怎么知道,从客户端javascipt应用程序已超时?或者,我如何在global.asax中检测到这一点;也许在application_beginrequest?

2 个答案:

答案 0 :(得分:0)

如果您正在谈论会话超时。发生这种情况时,IHttpSessionState.IsNewSession属性应设置为true。

如果您指的是auth timeout,那么您必须检查AuthenticationTicket是否过期。

答案 1 :(得分:0)

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

请参阅this questionmy answer,了解有关如何设置的详细信息,但关键是如果您不希望检查到期扩展滑动过期,您必须将过期页面/处理程序配置为单独的虚拟目录,并使用slidingExpiration = false设置表单身份验证。