我正在编写一个应用程序,有人可以编辑网页上的段落。 jQuery用于将已编辑的段落数据发送和接收到处理程序,处理程序将其保存或从数据库中读取。问题是,如果表单身份验证已超时,我将从我的处理程序返回登录页面。如果身份验证超时并将整个页面重定向到登录页面,我是否可以在客户端或服务器上检测到?
答案 0 :(得分:1)
在我的应用程序中,在客户端,我检查返回页面的HTTP状态。如果是401(未授权错误),我在模态对话框中显示登录表单。您可以像这样重新进行身份验证,或者只使用
进行重定向window.location = 'http://someurl.com';
这需要服务器的合作来返回401,但这对我来说似乎是最干净的方式。
答案 1 :(得分:1)
我最近完成了一种处理401s的方法,我认为这也适用于你。 .NET的过去版本中的问题是错误页面不会返回正确的错误代码,它们只返回到指定页面302.
使用.NET 3.5,您的错误处理程序可以使用redirectMode“重写”而不是“重定向”:
<customErrors mode="On" defaultRedirect="/err.aspx" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx"/>
</customErrors>
由于所有请求(包括Web服务调用)现在都将返回正确的HTTP状态代码,因此您可以在javascript中正确使用404/401/500代码。
然后,在你的客户端代码中(这是在jQuery中并重定向任何错误,不仅是401s,而且你明白了):
$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
window.location.href('/error.aspx');
});