2012-04-11 6 views
0

Ich versuche, einige Admin-spezifische Schaltflächen auf meiner Masterpage von Benutzern ohne Administratorrechte zu verbergen.Aufruf einer Methode in meinem HomeController von meiner Masterpage

mein Code sieht wie folgt aus bisher:

<% if (Request.IsAuthenticated) 
    {%> 
     <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%> 
     <%} else { }%> 

jetzt möchte ich einen Scheck in der Anweisung IF() tun, wenn der aktuelle Benutzer ein Administrator ist. Ich benutze das ASP.NET-Mitgliedschaftssystem und lasse jedem Benutzer eine spezielle Klasse mit einigen exstra-Informationen zukommen, einschließlich Informationen darüber, ob er ein Administrator ist oder nicht (bool).

meine Frage ist, wie gehe ich über das Aufrufen einer Methode, die dies oder etwas Ähnliches überprüft?

+0

Ich dachte es etwas wäre, wenn (Request.IsAuthenticated && „Methode, die für adminrights prüft“) Ich weiß nur nicht, – AronChan

+0

, wie solche von der Masterpage an eine Steuerung zum Aufrufen einer Methode – AronChan

+1

http: // Stackoverflow. com/questions/409213/how-can-ich-create-a-view-das-hat-anders-zeigt-entsprechend-der-rolle-the-us oder http://stackoverflow.com/questions/4610749/ asp-net-mvc-check-rolle-inside-view –

Antwort

3
<% if (Request.IsAuthenticated && User.IsInRole("Administrator")) 
    {%> 
     <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%> 
     <%} else { }%> 

Wenn Sie die ASP.NET-Mitgliedschaftsanbieter und die ASP.NET-Rollenanbieter verwenden die Benutzer, um ihre Rollen zu verknüpfen, können Sie rufen Sie einfach den IsInRole(string) -Methode auf Ihrer IPrincipal User Objekt Sicht.

+0

Es scheint, dass ich nicht das IPrincipal Benutzerobjekt habe. Wie genau mache ich das? – AronChan

+0

Ich schaffte den Zugriff auf meinen Benutzer mit: HttpContext.Current.User.IsInRole ("Administrator") Ist das genauso gut wie Ihr Beispiel oder gibt es einen bestimmten Grund, dass Sie es so gemacht haben? – AronChan

+0

'HttpContext.Current.User.IsInRole (" Administrator ")' ist in Ordnung. Vielleicht ist es nur MVC3 oder die Razor View-Engine, die @User standardmäßig auf der Ansichtsseite zur Verfügung stellt. – danludwig