2010-01-12 38 views
0

我正在使用ASP.Net的表单验证工作。客户端还会对服务器进行RESTfull调用(前端的ExtJS组件)。在.Net中验证Cookie过期

我们正在使用自定义的HttpHandler进行服务调用。

我的问题是,无论何时何时身份验证cookie过期,我的HttpHandler的ProcessRequest方法不会被调用,以便我检查cookie的缺席并重定向用户以再次登录。

一个例子是用户离开页面然后在20分钟后回来并点击异步加载的下拉菜单。该应用程序只是挂起从来没有得到我的处理程序。

有什么想法?

回答

0

强烈建议阅读本MSDN杂志文章中标题为“管道事件模型”的部分:Securely Implement Request Processing, Filtering, and Content Redirection with HTTP Pipelines in ASP.NET

简而言之,认证在您的HttpHandler中将请求移交给ProcessRequest()之前就已完成。如果您需要处理这些情况下,您需要连接到管道的事件(如的BeginRequest或身份验证的请求),并添加自己的处理程序,就像这样:

public class EnableWebServicesModule : 
       IHttpModule 
    { 

    public void Init(HttpApplication app) 
    { 
     // register event handler 
     app.BeginRequest += new EventHandler(this.OnBeginRequest); 
    } 

    public void OnBeginRequest(object obj, EventArgs ea) 
    { 
     // Check if security works here by looking for the cookie or 
     // the user context. 

    } 

    ... 
} 

进一步的阅读在这个迷人的和令人兴奋的话题,check Rich Strahl's walkthrough: A low-level Look at the ASP.NET Architecture