Frage

Ich möchte den Zugriff auf eine bestimmte URL einschränken, es sei denn, der Benutzer ist ein Mitglied von 2 verschiedenen Rollen. In diesem Fall möchte ich nur Zugriff auf diese URL gewähren, wenn sich der Benutzer in beiden Berichten befindet UND Archivierungsrolle. Gibt es eine Möglichkeit, dies in ASP.NET zu tun?

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting, Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

Ich möchte so etwas:

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting & Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

War es hilfreich?

Lösung

Es ist eine Art hässlich, aber Sie können von dem Rollenanbieter erben, den Sie derzeit verwenden (SQLROLEPROVIDER, WESTERSPOKEROFROVIDER, AutorizationStoreroleProvider), überschreiben GetRolesforuser, rufen Sie die Basisimplementierung an, um die Rollen zu erhalten, und kombinieren sie dort als notwendig. Setzen Sie dann natürlich Ihren benutzerdefinierten Rollenanbieter in Ihr Web.config in deru003CroleManager> Konfigurationsabschnitt.

Sie müssen nur die eine Methode außer Kraft setzen (und vielleicht GetUsersinrole) und sie bei Bedarf kombinieren.

public override string[] GetRolesForUser( string username ) {
    List<string> roles = new List<string>( base.GetRolesForUser(username) );
    if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
        roles.Add("ReportingAndArchiving");
    }
    return roles.ToArray();
}

Andere Tipps

Sie können eine SQL -Funktion erstellen, die bei einer bestimmten Benutzer -ID, einer Seiten -URL und einer Liste der zulässigen Rollen (XML) ein wenig angibt, ob der Zugriff auf diese URL gewährt wird Um dies als gültige Wahl in einem JavaScript- oder DHTML -Menü oder was auch immer zu zeigen.

Du kannst Benutzerdefinierte Rollenanbieter implementieren. Anschließend können Sie neue "gefälschte" Rollenberichte und -Archiving definieren und prüfen, ob der Benutzer zur Berichterstattung und der Archivierung innerhalb der Isuserinrolmethode bei der Anforderung der Berichterstattung und der Berichterstattung angefordert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top