2010-12-17 9 views
0

Ich habe ein Verzeichnis mit dem Namen admin. Es gibt keinen physischen Pfad zu diesem Verzeichnis, da es als Präfix für meinen Administrationsbereich fest codiert ist.ASP.NET MVC2 den Zugriff auf den Controller mit IIS 7 verweigern?

Wie kann ich diesen Pfad mit Standardauthentifizierung schützen? Ich möchte, dass nur Benutzer Admin in diesem Bereich anmelden können. Aber die Hauptseite muss für jeden Benutzer verfügbar sein.

Antwort

4

Wenn Sie mit einer der in Authentifizierungs-Varianten gebaut:

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

bearbeiten

auf einen bestimmten Benutzer zu beschränken:

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

EDIT2

Ja, Sie können, aber es ist eine Art hack. Erstellen Sie Ihre eigene Klasse und leiten Sie sie von RouteBase ab.

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; 
    } 
} 

Dann fügen Sie es in Ihrem global.asax hinzu.

+0

Ist es möglich, basierend auf Routen oder basierend auf einem bestimmten Pfad, nur einen bestimmten Benutzer anzugeben? In möchte nicht eine dieser Fahnen vergessen und nackt sein. – Chris

+0

hat ein weiteres Update hinzugefügt, das beschreibt, wie. – jgauffin

Verwandte Themen