Tengo un proyecto con 2 áreas/Admin y/Usuario.enrutamiento MVC basado en roles
ruta por defecto de administración es /Admin/Home/Índice de y ruta por defecto del usuario es /usuario/Home/Índice de.
¿Es posible implementar el enrutamiento para que su URL a casa para que parezca /Perfil/Índice sino para mostrar el contenido de /Admin/Home/Índice de para administradores y /usuario/Home/Índice de para los usuarios ?
UPD
Finalmente averiguar cómo hacerlo
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, pero en cuanto a mí, no es el camino MVC. ¿Alguien sabe cómo hacerlo bien?