2009-01-14 90 views
4

我在编写一个应用程序,通过某人可以编辑网页上的段落。 jQuery用于将编辑过的段落数据发送和接收到一个处理程序,该处理程序将其保存或从数据库中读取。问题是,如果表单身份验证超时,我会从我的处理程序返回登录页面。如果身份验证超时并将整个页面重定向到登录页面,是否有任何方法可以在客户端或服务器上检测到?检测处理程序中的身份验证超时并将整个页面重定向到登录页面

回答

1

在我的应用程序中,在客户端,我检查返回页面的HTTP状态。如果它是401(未授权错误),我会在模态对话框中显示登录表单。这样你可以重新认证或者只是重新使用

window.location = 'http://someurl.com'; 

这就要求服务器返回一个401的合作,但是这似乎是对我来说最彻底的方法。

+0

这听起来不错,但我如何得到我的应用程序返回401而不是200和登录页面? – Sprintstar 2009-01-14 15:30:25

+0

看到我的答案为什么我认为你不能。 – 2009-01-14 23:21:08

1

我最近完成了一种处理401s的方法,我认为它也适用于你。在过去的.NET版本中,问题是错误页面不会返回正确的错误代码,它们只是302到指定的页面。

在.NET 3.5中,你的错误处理程序可以“重写”,而不是“重定向”使用redirectMode:

由于所有请求(包括Web服务调用)现在将返回正确的HTTP状态代码,你可以在您的javascript中正确使用404/401/500代码。

然后,在您的客户端代码(这是jQuery和被重定向的任何错误,不仅401S,但你的想法):

$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) { 
    window.location.href('/error.aspx'); 
}); 
相关问题