Question

Normalement, mes URL ressemblent à la norme: www.example.com/controller/action

Je souhaite maintenant configurer ma section d'administration, par exemple:

 www.example.com/admin/
 www.example.com/admin/user/list
 www.example.com/admin/content/add
etc.

Le format est donc le suivant: www.exemple.com/admin/controller/action

Je n'arrive pas à comprendre comment configurer les itinéraires pour que cela ressemble à ce qui précède.

Était-ce utile?

La solution

Il vous suffit de mapper un nouveau chemin avec la section "admin" codée en dur au début de la définition de la route.

Par exemple, ajoutez ceci à vos routes dans RegisterRoutes dans le fichier Global.asax.cs et assurez-vous qu'il apparaît au-dessus de la route par défaut (en supposant que vous n'avez pas ajouté autres itinéraires):

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

Remarque: la partie "admin" codée en dur au début de la définition de la route.

Remarque 2: Si vous avez ajouté d'autres routes au-delà de la route par défaut, vous devez vous assurer que vos routes sont bien ordonnées.

Voici un lien vers un bon article de blog tiré de Scott Guthrie sur le routage MVC : Routage des URL

Autres conseils

La réponse de Kelsey est juste, mais je voulais ajouter quelque chose à la discussion. Une autre option consiste à ne pas disposer du " admin " routes du tout, mais nécessitent à la place des sessions authentifiées par l'administrateur pour accéder réellement aux URL restreintes.

C’est souvent ainsi que les choses se font de manière "traditionnelle". Applications RESTful. Votre contrôleur représente le type de ressource que vous manipulez, l'action est le verbe et l'id est l'identifiant unique d'un membre spécifique de cette ressource.

En d'autres termes, au lieu d'avoir:

/content/list (for normal users)
/admin/content/add (for admins)

Vous auriez

/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)

L'ajout de / admin / à l'URL n'ajoute pas vraiment d'avantages (sauf peut-être que vous pouvez écrire votre logique de sécurisation avec une seule règle pour tout ce qui est sous / admin), mais le compromis est des itinéraires plus compliqués et enfreignant la norme RESTful . Briser les pratiques standard n'est pas en soi une mauvaise chose, mais vous devez considérer qu'elles sont standard pour une raison et que, à moins que vous ne disposiez d'avantages spécifiques pour les enfreindre, vous pourriez envisager de les respecter.

Il convient de noter que dans les deux styles d'URL, vous devez authentifier l'utilisateur, sinon tout le monde pourrait l'utiliser.

Dans ASP.NET MVC, vous pouvez restreindre l'accès aux actions (ou même à des contrôleurs entiers) en fonction du niveau utilisateur à l'aide d'ActionFilters. En décorant vos actions d'administration uniquement avec ces filtres, vous pouvez vous assurer que seuls les utilisateurs administrateurs authentifiés peuvent les utiliser.

Lire entrée de blog de Scott Gu ou de Rob Connery's poste pour plus d'informations.

Depuis la version 2 de MVC, ils ont ajouté le concept de "zone" qui vous permet de le faire correctement :) Voici Le message de ScottGu sur le Preview de MVC 2 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top