6

我有一个应用程序,其中大约 20 个http generic handler用于ajax call.
我已经用于IReadOnlySessionState在我的处理程序中访问会话。一切正常。

但是,当会话到期时,我的处理程序会返回一些 html,因为它会重定向到默认页面,并且默认页面的 html 会在响应中发回。

要克服这个问题。
我已经检查了处理程序中的会话变量,如果它为空,我已经写了

 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 调用检查和重定向到登录页面。

4

1 回答 1

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(); 
    }
 });
于 2012-12-30T12:32:54.927 回答