从单独的HTTP处理程序访问表单身份验证

时间:2011-01-02 09:26:18

标签: asp.net forms-authentication httphandler

我刚刚阅读有关为ASP.NET 4.0和IIS7实现自己的HTTP处理程序的内容。这看起来很酷。我想要对ZIP文件进行特殊处理,似乎HTTP处理程序是完美的解决方案。

然而,给我带来麻烦的是处理程序必须在一个单独的程序集中。那么如何从这个程序集中访问我的应用程序的其余部分呢?

具体来说,我想确定用户是否经过身份验证,如果不是,则将其重定向到登录页面。但是我的处理程序将无法使用User.Identity.IsAuthenticated等。

(是的,我知道有很多方法可以在没有HTTP处理程序的情况下解决这个问题,但它们似乎不适合我的特定需求。)

1 个答案:

答案 0 :(得分:1)

  

我的处理程序将无法使用User.Identity.IsAuthenticated等。

ProcessRequest方法为您提供当前的HTTP上下文,您可以从中确定用户是否经过身份验证:

public void ProcessRequest(HttpContext context)
{
    if (!context.User.Identity.IsAuthenticated)
    {
        // the user is not authenticated
    }
    ...
}