MVC3区域的身份验证

时间:2012-01-05 07:24:15

标签: asp.net-mvc-3 authentication httpmodule asp.net-mvc-3-areas

我正在创建一个带有Areas的mvc应用程序。 我需要对这些区域使用不同的身份验证方法。

我通常使用httpmodules进行身份验证,在http模块中我检查用户是否经过身份验证(我通常使用cookie),如果没有,我会重定向他。

所以我有一个用于验证整个应用程序的httpmodule,我想注册另一个httpmodule,用于在该区域进行身份验证。

我试过了:

  1. 使用区域文件夹中的web.config文件并在其中列出httpmodule。
  2. 使用web.config文件中的位置部分。
  3. 这两个对我来说都不起作用,httpmodule从未被调用过。

    1. 如何为某个区域注册httpmodule。
    2. 如何覆盖整个应用的httpmodule。
    3. 如果这是错误的做法,那么这是一种更好的方法。
    4. 由于

1 个答案:

答案 0 :(得分:2)

您始终可以在覆盖AuthorizeCore的位置编写自定义AuthorizeAttribute。在此功能中,您始终可以重定向到特定的登录名。

public class CustomAuthorizationAttribute : AuthorizeAttribute
{
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.User.Identity.IsAuthenticated)
        {
            // get userinformation
            return true;
        }

        httpContext.Response.Redirect(NotifyUrl);
        return false;
    }
}

如果您没有包含重定向,则会重定向web.config中定义的loginurl