设置表单身份验证重定向每个区域的URL

时间:2013-09-27 07:36:39

标签: asp.net-mvc asp.net-mvc-4 authentication

我有一个项目布局,如:

Areas | Admin 
Areas | FrontEnd

我希望每个区域[Authorize]个用户(因为管理员会在FrontEnd中为用户使用不同的表。当我在管理区域的Controller中使用[Authorize]标记时,它将我重定向到在 root web.config文件中设置的表单身份验证登录URL。

是否可以按区域覆盖?我看到每个区域都有一个Web.config文件,但如果我在那里添加它,它似乎忽略了表单身份验证设置。

如果我以错误的方式接近这一点,我很乐意接受一些建议。

编辑:

我尝试了一些东西,但不知道这是不是最好的做法。基本上,实现我自己的CustomAuth属性并重定向:

public class CustomAuth : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (!base.AuthorizeCore(httpContext))
            httpContext.Response.Redirect("~/Admin/Account");

        return true;
    }
}

这是一种有效的方法吗?

1 个答案:

答案 0 :(得分:1)

我最终使用自己的[Authorise]属性并重定向到未经授权的访问。

public class AuthorizeArea : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new RedirectResult("/Admin/Account");
    }
}