首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通用http处理程序中处理会话超时

在通用http处理程序中处理会话超时
EN

Stack Overflow用户
提问于 2012-12-25 12:21:22
回答 1查看 1.8K关注 0票数 6

我有一个应用程序,其中ajax call使用了大约20个http generic handler

我在我的handlers.Everything中使用了IReadOnlySessionState来访问会话,运行得很好。

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

来解决这个问题。

我已经检查了处理程序中的会话变量,如果它是null,那么我已经编写了

代码语言:javascript
复制
 context.Response.Write("logout")

我在jQuery ajax中检查是否注销或其他任何情况。

代码语言:javascript
复制
  $.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调用检查并重定向到登录页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 20:32:55

您的处理程序位于一个目录中,该目录通过asp.net身份验证进行自动控制。

我应该做的是通过在web.config上设置,不让asp.net身份验证自动控制,这样对处理程序的调用将在用户登录的情况下完成,如果调用该处理程序的用户具有会话和身份验证,我将在处理程序中进行检查。

然后,在用户没有读取该处理程序的身份验证的情况下,我向ajax调用返回一个简单的标志,然后识别并进行重定向,例如:

代码语言:javascript
复制
$.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(); 
    }
 });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14027642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档