我有一个应用程序,http generic handler
使用大约20 ajax call
个。{
我使用IReadOnlySessionState
来访问我的处理程序中的会话。一切正常。
但是当会话到期时,我的处理程序返回一些html,因为它重定向到默认页面,默认页面的html会在响应中发回。
解决这个问题。
我检查了处理程序中的会话变量,如果它是null,我写了
context.Response.Write("logout")
我检查jQuery ajax天气它是注销还是别的什么。
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data) { checklogout(data); $("#loading").hide(); },
error: function () { $("#loading").hide(); },
async: false
});
如果是注销,那么我使用位置重定向到登录页面。
我正在使用form-authentication
来验证用户身份。
是否有更好的方法可以使用jquery-ajax调用来检查和重定向到登录页面。
答案 0 :(得分:2)
您的处理程序位于通过asp.net身份验证自动控制的目录中。
我应该做的是不要通过web.config上的设置通过asp.net身份验证自动控制,这样对处理程序的调用将完成以太用户不在以太网中登录,并且在处理程序内我将检查为此,如果调用该处理程序的用户具有会话和身份验证。
然后,在用户没有认证来读取该处理程序的情况下,我将一个简单的标志返回到我的ajax调用,然后识别并进行重定向,例如:
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data)
{
if(data.redirectToLogin == true)
{
window.location = "/login.aspx"
}
else
{
// do the rest job
}
},
error: function ()
{
$("#loading").hide();
}
});