Ich habe folgendes in meinem web.config:Wie kann ich in meiner Codebehind-Klasse die autorisierten Rollen abrufen?
<location path="RestrictedPage.aspx">
<system.web>
<authorization>
<allow roles="Group1Admin, Group3Admin, Group7Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
Innerhalb RestrictedPage.aspx.cs, wie rufe ich die Sammlung erlaubt Rollen, die Group1Admin, Group3Admin enthält, und Group7Admin?
Hier ist, warum ich fragen:
Die web.config die Berechtigung auf die Seite verarbeitet. Das funktioniert gut. Aber ich werde ein paar dieser Seiten haben (sagen wir RestrictedPage.aspx, RestrictedPage2.aspx, RestrictedPage3.aspx). Jede dieser Seiten wird mein benutzerdefiniertes Webcontrol enthalten. Und jede dieser Seiten wird unterschiedliche Rollen haben. Mein Webcontrol hat eine Dropdown-Liste. Die Auswahlmöglichkeiten innerhalb des Dropdown-Menüs hängen von der Schnittmenge der Rollen des Benutzers und der zulässigen Rollen der Seite ab.
Wie unten erwähnt, würde wahrscheinlich das Durchsuchen der web.config mit XPath funktionieren. Ich habe nur auf etwas mehr Framework gehofft. So ähnlich wie SiteMap. Wenn ich Rollen in meine web.sitemap lege, kann ich sie mithilfe von SiteMap.CurrentNode.Roles (meine Website verwendet die Windows-Authentifizierung), also kann ich web.sitemap nicht für die Sicherheit trimmen und ich würde lieber Rollen in nur einer Datei).
Perfekt! Hier ist meine letzte Zeile: AuthorizationSection section = (AuthorizationSection) WebConfigurationManager.GetSection ("system.web/authorization", Request.Path); Request.Path navigiert zu location = "RestrictedPage.aspx" (wenn es sich um die aktuelle Seite handelt). Danke! –
Um die aktuelle web.config für die Variable configPath abzurufen - ersetzen Sie sie mit oder setzen Sie sie auf "~", wie in dieser Antwort beschrieben [hier] (http://stackoverflow.com/a/4134213/603807) – dyslexicanaboko