我有一个应用程序,其中ajax call使用了大约20个http generic handler。
我在我的handlers.Everything中使用了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调用检查并重定向到登录页面?
发布于 2012-12-30 20:32:55
您的处理程序位于一个目录中,该目录通过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();
}
});https://stackoverflow.com/questions/14027642
复制相似问题