2010-12-17 2 views
0

J'ai un répertoire qui s'appelle admin. Il n'y a pas de chemin physique vers ce répertoire, car il est codé en dur en tant que préfixe pour ma zone d'administration.ASP.NET MVC2 refuser l'accès au contrôleur avec IIS 7?

Comment puis-je protéger ce chemin avec une authentification standard? Je veux que seul l'utilisateur Admin puisse se connecter à cette zone. Mais la page principale doit être disponible pour chaque utilisateur.

Répondre

4

Si vous utilisez l'un des construit dans des variantes d'authentification:

[Authorize(Roles = "Administrator")] 
public class AdminController : Controller 
{ 
} 

Modifier

Pour limiter à un utilisateur spécifique:

[Authorize(Users = "Admin")] 
public class AdminController : Controller 
{ 
} 

Edit2

Oui vous pouvez, mais c'est un peu hack. Créez votre propre classe et dérivez-la de RouteBase.

public class MyRoute : RouteBase 
{ 

    public override RouteData GetRouteData(HttpContextBase context) 
    { 
      if (context.Request.Uri == XXX && context.User != YYYY) 
       return forbiddenRoute;//redirect to forbidden page. 
      else 
       return null; 
    } 
} 

Puis ajoutez-le dans votre global.asax.

+0

est-il possible de dire juste limite à un utilisateur spécifique en fonction des routes ou en fonction d'un chemin spécifique? En ne veux pas oublier l'un de ces drapeaux et être nu. – Chris

+0

a ajouté une autre mise à jour décrivant comment. – jgauffin

Questions connexes