2017-07-21 1 views
0

Est-il possible d'effectuer une redirection basée sur des rôles via des routes? Mon but est de rediriger l'utilisateur vers la page d'accueil en fonction de son rôle, sans utiliser RedirectToAction dans l'action de connexion (POST) pour améliorer la réactivité du site.ASP.NET MVC - Plusieurs pages d'index par défaut en fonction du rôle

Je veux quelque chose comme ça.

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     if (User.IsInRole("Admin")) 
     { 
      routes.MapRoute(
       "Admin", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "User", action = "List", id = UrlParameter.Optional } // Parameter defaults 
      ); 
     } 
     else 
     { 
      routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

     } 
    } 
+1

Ce n'est pas possible. (et qu'est-ce qui vous fait penser que cela pourrait _enhance responsiveness_?) –

Répondre

1

Les routes sont configurées au démarrage de l'application, ainsi les routes sont établies avant l'authentification de l'utilisateur et ainsi de suite. Ce que vous pouvez faire est d'utiliser une méthode d'action générique:

public ActionResult Go() 
{ 
    if (User.IsInRole("Admin")) { 
    return RedirectToAction("List", "User"); 
    } 
    else { 
    return RedirectToAction("Index", "Home"); 
    } 
} 

Naviguer tous les utilisateurs de cette méthode d'action Go, et il les rediriger vers l'endroit approprié.

+0

Merci pour votre réponse. Je connais la méthode d'action générique. Je l'ai trouvé dans un autre post. Le problème était que le post avait la dernière activité il y a environ 3 ans (environ 2 versions .NET), donc je voulais m'assurer que la solution était toujours valide. –