2010-01-14 9 views
6

Vielleicht nähere ich mich dem falschen Weg und sollte alles in Aktion Filter tun, in diesem Fall bitte zeigen Sie mir in die richtige Richtung!ASP.NET MVC überprüfen, ob Benutzer zu [x] Gruppe gehört

Ich gründe meine ASP.NET MVC-Anwendung, so dass die eine Homecontroller Index Aktion zwei verschiedene Arten von Inhalten liefert, etwa so:

if(Request.IsAuthenticated) 
    return View("IndexRegistered"); 
else 
    return View("IndexGuest"); 

Das ist in Ordnung, aber sagen, ich mag es aufgeteilt in drei so, dass Administrator Mitglieder ihre eigene Seite bekommen ...

Kann mir jemand über das fehlende Teil dieses Puzzles aufklären?

Antwort

20

Verwenden Sie die Roles Eigenschaft des Autorisieren Action Filter:

[Authorize(Roles="Administrators,Moderators")] 
public ActionResult SomeAction(){ 

} 

Oder verwenden Sie die User.IsInRole() Methode:

if(User.IsInRole("Administrator")) { ... } 
+0

http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/ –

+3

if (User.IsInRole ("Administrator")) war genau das, was ich brauchte, danke! Noch offen für die Eingabe, wenn es eine bessere Möglichkeit gibt, dies zu tun. In der ersten Instanz der Verwendung von Authorize scheint es, als wäre es ein besserer Weg für mich (obwohl ich nicht wirklich warum kann), außer wie ich es verstehe, es bietet nur eine Decke zulassen/verweigern Bedingung, nicht mehrere Bedingungen, die ist wonach ich suche. – nathanchere

+0

Sie können der Eigenschaft Role mehrere Rollen hinzufügen. Ich aktualisiere den Code. –

2

Wenn Sie an der Authentifizierungsanbieter suchen, die kommt out-of-the-box in Mit den Standard-MVC-Projektvorlagen ist es einfach, dort Ihre eigene Rollenunterstützung hinzuzufügen und sie in der Sitzung zu verfolgen. Ihr Code wäre also:

if(Request.IsAuthenticated) 
{ 
    if(Session["Role"] == "Administrator") 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

und dann eröffnet Möglichkeiten wie:

if(Request.IsAuthenticated) 
    return View("Index" + Session["Role"]); 
else 
    return View("IndexGuest");