2010-08-25 3 views
2

En utilisant le fournisseur d'appartenance et le framework MVC, est-il possible que les routes soient modifiées dynamiquement pour qu'un utilisateur déjà connecté accède à sa propre page, plutôt que par défaut.Routes dynamiques et fournisseurs d'appartenance

Au moment où je vais à la valeur par défaut. Si l'utilisateur est déjà connecté ou non, je redirige la redirection vers sa propre page. Cela ne peut pas être la bonne façon! Peut-il?

Dans RegisterRoutes Je possède ce

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = "" } 
); 

Répondre

1

Une option serait d'utiliser une contrainte Route.

public class AuthenticatedConstraint : IRouteConstraint 
{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     return httpContext.Request.IsAuthenticated; 
    } 
} 

Ensuite, vous pouvez définir un itinéraire "de LoggedInDefault" avant la valeur par défaut régulière:

routes.MapRoute(
    "LoggedInDefault", 
    "{controller}/{action}/{id}", 
    new { controller = "LoggedIn", action = "Index", id = "" }, 
    new { loggedIn= new AuthenticatedConstraint()} 
); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = "" } 
);