Ho un progetto con 2 aree/Amministratore e/Utente.Routing basato su ruolo MVC
percorso di default di amministrazione è /Amministratore/Home/Indice e instradamento di default dell'utente è /utente/Home/Indice.
E 'possibile implementare il routing per rendere il loro URL casa a guardare come /Profilo/Indice ma per mostrare contenuti da /Amministratore/Home/Indice per gli amministratori e /utente/Home/Indice per gli utenti ?
upd
infine scoprire come farlo
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;
}
}
Funziona, ma per me non è il modo MVC. Qualcuno sa come farlo bene?