MVC roteamento baseado em função

Tenho um projeto com 2 áreas / Admin e /User

A rota padrão do administrador é / Admin / Página inicial / Índice e a rota padrão do usuário é / Usuário / Página inicial / Índice.

É possível implementar o roteamento para fazer com que o URL de sua página se pareça com / Perfil / Índice mas para mostrar o conteúdo de / Admin / Página inicial / Índice para administradores e / Usuário / Página inicial / Índice para usuários?

upd

Finally descubra como fazê-lo

context.MapRoute(
    "Admin",
    "Profile/{action}",
    new { area = AreaName, controller = "Home", action = "Index" },
    new { RoleConstraint = new Core.RoleConstraint() },
    new[] { "MvcApplication1.Areas.Admin.Controllers" }
);
...
context.MapRoute(
    "User",
    "Profile/{action}",
    new { area = AreaName, controller = "Home", action = "Index" },
    new { RoleConstraint = new Core.RoleConstraint() },
    new[] { "MvcApplication1.Areas.User.Controllers" }
);

public class RoleConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        string roleName = db.GetRoleByUserName(httpContext.User.Identity.Name);
        string areaName = route.Defaults["area"].ToString();
        return areaName == roleName;
    }
}

Funciona, mas quanto a mim não é o caminho do MVC. Alguém sabe como fazer certo?

questionAnswers(2)

yourAnswerToTheQuestion