Many thanks to Ufuk Hacıoğulları for putting me on the right scent. My final solution was this:
public class AreaAuthorizeAttribute : AuthorizeAttribute
{
private readonly string area;
public AreaAuthorizeAttribute(string area)
{
this.area = area;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
string loginUrl = "";
if (area == "Admin")
{
loginUrl = "~/Admin/Login";
}
else if (area == "Members")
{
loginUrl = "~/Members/Login";
}
filterContext.Result = new RedirectResult(loginUrl + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery);
}
}