Share via


Exemplarische Vorgehensweise: Filtern von Siteübersichtsknoten auf der Basis von Sicherheitsrollen

Aktualisiert: November 2007

Eine allgemeine Anforderung an Websites besteht darin, den Zugriff auf bestimmte Seiten zu beschränken. Die Kombination von ASP.NET-Rollenverwaltung und URL-Autorisierung in ASP.NET bietet eine Möglichkeit, den Zugriff auf Webdateien auf der Grundlage von Sicherheitsrollen zu beschränken. Siteübersichten vervollständigen dieses Verfahren. Sie verwenden ein Feature, die so genannte Einschränkung aus Sicherheitsgründen, mit dem die Navigationsverknüpfungen auf diese beschränkten Dateien auf Grundlage von Sicherheitsrollen ausgeblendet werden.

Eine Rolle ist der Name einer Gruppe von Benutzern. Nachdem Sie Rollen erstellt haben, können Sie einzelne Benutzerkonten einer Rolle zuweisen. Sie können den Zugriff auf Webdateien und Knoten in Siteübersichten auf der Grundlage von Rollen beschränken.

Im Rahmen dieser exemplarischen Vorgehensweise erhalten Sie Informationen zu folgenden Themen:

  • Erstellen einer Website mit Mitgliedschaft und Benutzeranmeldung.

  • Erstellen von Rollen für die Website und Zuweisen von Benutzerkonten zu diesen Rollen.

  • Erstellen von URL-Autorisierungsregeln, die selektiv den Zugriff auf Seiten gestatten oder verweigern.

  • Erstellen einer Siteübersicht und Aktivieren der Einschränkung aus Sicherheitsgründen.

  • Erstellen eines Navigationsmenüs auf einer Webseite.

Vorbereitungsmaßnahmen

Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Microsoft Visual Web Developer.

  • .NET Framework.

  • Lokal auf dem Computer installierte IIS (Internet Information Services, Internetinformationsdienste).

  • Diese exemplarische Vorgehensweise erfordert auch ein Verfahren zur Identifizierung einzelner Benutzerkonten. In Arbeitsanwendungen können Sie Benutzer auf verschiedene Weisen identifizieren, z. B. anhand des Windows-Benutzerkontos. In dieser exemplarischen Vorgehensweise identifizieren Benutzer sich jedoch durch das Anmelden an der Website selbst. Daher erfordert diese exemplarische Vorgehensweise, dass Sie eine Website haben, die so konfiguriert ist, dass sie ASP.NET-Mitgliedschaft und Formularauthentifizierung verwendet. Wenn Ihre Website bereits mit einer Mitgliedschaft konfiguriert ist, können Sie diese Website als Ausgangspunkt für diese exemplarische Vorgehensweise verwenden.

Erstellen einer Website mit Mitgliedschaft und Benutzeranmeldung

Bevor Sie mit einer ASP.NET-Mitgliedschaft und Rollen arbeiten, muss Ihnen eine Website zur Verfügung stehen. Außerdem müssen Sie diese Website so konfigurieren, dass die Mitgliedschaft aktiviert ist, und dass Rollen angelegt werden können. Wenn Sie Exemplarische Vorgehensweise: Erstellen einer Website mit Mitgliedschaft und Benutzeranmeldung bereits abgeschlossen haben, können Sie die Website verwenden, die Sie in dieser exemplarischen Vorgehensweise konfiguriert haben.

Erstellen einer Website

Wenn Sie bereits eine Website in Visual Web Developer erstellt haben (z. B. im Rahmen von Exemplarische Vorgehensweise: Erstellen einer einfachen Webseite in Visual Web Developer), können Sie diese Website verwenden und zum nächsten Abschnitt übergehen. Erstellen Sie andernfalls eine neue Website und eine neue Webseite, indem Sie folgende Schritte ausführen.

So erstellen Sie eine lokale IIS-Website

  1. Öffnen Sie Visual Web Developer.

  2. Klicken Sie im Menü Datei auf Neue Website.

    Das Dialogfeld Neue Website wird angezeigt.

  3. Klicken Sie unter Von Visual Studio installierte Vorlagen auf ASP.NET-Website.

  4. Klicken Sie in der Dropdownliste Sprache auf die Programmiersprache, in der Sie arbeiten möchten.

  5. Wählen Sie in der Dropdownliste Speicherort den Eintrag HTTP aus.

    Alternativ können Sie Dateisystem auswählen, wenn Ihnen kein IIS-Server zur Verfügung steht. Wenn Sie aber HTTP verwenden, wird ein reales Bereitstellungsszenario simuliert, in dem Sie Ihre Seiten testen und in einem Browser anzeigen können.

  6. Klicken Sie auf Durchsuchen.

    Das Dialogfeld Speicherort auswählen wird angezeigt. Wenn Sie im vorherigen Schritt HTTP ausgewählt haben, sollte die Schaltfläche Lokale IIS ausgewählt sein. Wenn das nicht der Fall ist, klicken Sie auf Lokale IIS.

  7. Wählen Sie den Knoten Standardwebsite aus.

  8. Klicken Sie auf das Symbol Neue Webanwendung erstellen (in der rechten oberen Ecke), und geben Sie der neuen Website den Namen SiteNavigation.

  9. Klicken Sie auf Öffnen, und klicken Sie dann auf OK.

    Visual Web Developer erstellt die Website und öffnet eine neue Seite mit dem Namen Default.aspx. Visual Web Developer erstellt standardmäßig neue Seiten mit einer dazu passenden Code-Behind-Datei – in diesem Fall Default.aspx.cs. Sie können dieses ändern, wenn Sie nachfolgende neue Seiten mit dem Assistenten zum Hinzufügen neuer Elemente erstellen.

    Hinweis:

    Wenn eine ältere Version von .Net Framework vor Visual Web Developer erstellt wurde, kann es vorkommen, dass Sie beim Konfigurieren der Website eine Fehlermeldung erhalten, in der Sie aufgefordert werden, die aktuellste Version von .NET Framework zu verwenden. Sie können dies beheben, indem Sie im angezeigten Dialogfeld auf Ja klicken, um ASP.NET Version 2.0 auf dem Server zu aktivieren, oder indem Sie den IIS-Manager verwenden. Klicken Sie im IIS-Manager mit der rechten Maustaste auf die Anwendung, klicken Sie auf Eigenschaften, und klicken Sie dann auf die Registerkarte ASP.NET. Wählen Sie neben ASP.NET-Version die Version von .NET Framework aus, die mit Visual Web Developer installiert wurde.

Aktivieren der Mitgliedschaft und Erstellen eines Benutzers

Wenn Sie die Mitgliedschaft noch nicht aktiviert haben, verwenden Sie die folgende Prozedur, um sie zu aktivieren. Gehen Sie andernfalls zum nächsten Abschnitt über.

So aktivieren Sie eine Mitgliedschaft

  1. Klicken Sie in Visual Web Developer im Menü Website auf ASP.NET-Konfiguration.

    Das Websiteverwaltungs-Tool wird angezeigt.

  2. Klicken Sie auf die Registerkarte Sicherheit, und klicken Sie unter Benutzer auf Authentifizierungstyp auswählen, klicken Sie auf Aus dem Internet, und klicken Sie dann auf Fertig.

    Diese Option gibt an, dass die Anwendung Formularauthentifizierung verwendet, bei der sich Benutzer bei der Anwendung über eine Anmeldeseite anmelden, die Sie später in dieser exemplarischen Vorgehensweise erstellen.

  3. Klicken auf der Registerkarte Sicherheit auf Benutzer erstellen.

    Sie erstellen nun zwei Benutzerkonten für die Anwendung.

  4. Geben Sie im Feld Benutzer erstellen die Informationen ein, mit denen ein Benutzer der Anwendung definiert wird. Verwenden Sie die folgenden Werte als Richtlinien. Sie können jeden beliebigen Wert verwenden. Sie müssen sich aber Ihre Einträge notieren, damit Sie sie später in dieser exemplarischen Vorgehensweise verwenden können.

    • **Benutzername   **Verwenden Sie den Namen, Customer01, der der Name des ersten Benutzerkontos ist.

    • **Kennwort   **Verwenden Sie ein Kennwort Ihrer Wahl, vorzugsweise ein sicheres Kennwort, also ein Kennwort, das aus mindestens 8 Zeichen besteht, und das Großbuchstaben, Kleinbuchstaben sowie Satzzeichen enthält.

    • **E-Mail   **Verwenden Sie eine richtig formatierte E-Mail-Adresse. Alternativ können Sie eine fiktive E-Mail-Adresse verwenden, da in dieser exemplarischen Vorgehensweise keine E-Mail gesendet wird.

    • **Sicherheitsfrage und Sicherheitsantwort   **Geben Sie eine Frage und eine Antwort ein, die Sie später verwenden können, wenn Sie Ihr Kennwort wiederherstellen müssen.

  5. Aktivieren Sie das Kontrollkästchen Aktiver Benutzer, und klicken Sie dann auf Benutzer erstellen.

  6. Klicken Sie auf der Bestätigungsseite auf Weiter.

  7. Wiederholen Sie die vorhergehenden drei Schritte, um ein weiteres Benutzerkonto mit dem Namen Employee01 zu erstellen. (Wenn Sie Rollen für diese Benutzerkonten erstellen, verwenden Sie Namen, die nur aus Kleinbuchstaben bestehen.)

  8. Klicken Sie in der rechten unteren Ecke der Seite auf die Schaltfläche Zurück, um zur Sicherheit-Startseite zu wechseln.

Erstellen einer Benutzeranmeldeseite

Wenn Sie die Mitgliedschaft und die Rolleneinstellungen testen möchten, die Sie später in dieser exemplarischen Vorgehensweise konfigurieren, müssen Sie für Benutzer eine Möglichkeit erstellen, sich anzumelden, damit Sie diese identifzieren können.

So erstellen Sie für alle Benutzer eine Standardseite, auf der der Anmeldestatus angezeigt wird

  1. Öffnen Sie die Seite Default.aspx, und wechseln Sie dann zur Entwurfsansicht.

    Wenn Sie keine Seite Default.aspx haben, fügen Sie diese dem Stammverzeichnis der Website hinzu.

    Hinweis:

    Stellen Sie sicher, dass die Seite den Namen Default.aspx hat. Dieser Name wird später in dieser exemplarischen Vorgehensweise verwendet.

  2. Ziehen Sie aus der Gruppe Anmelden der Toolbox ein LoginStatus-Steuerelement auf die Seite.

    Das LoginStatus-Steuerelement führt Benutzer automatisch zur Seite Login.aspx, wenn sie sich nicht bereits angemeldet haben.

  3. Platzieren Sie den Cursor rechts vom LoginStatus-Steuerelement, drücken Sie die EINGABETASTE, und geben Sie dann den folgenden Text, einschließlich des zusätzlichen Leerzeichens, ein: Hello .

  4. Ziehen Sie aus der Gruppe Anmelden der Toolbox ein LoginName-Steuerelement auf die Seite.

    Im LoginName-Steuerelement wird der Name des Benutzers angezeigt, wenn der Benutzer sich angemeldet hat.

  5. Speichern Sie die Seite, und schließen Sie sie dann.

Sie haben jetzt eine Homepage, die für alle Benutzer verfügbar ist. Im nächsten Schritt erstellen Sie eine einfache Anmeldeseite.

So erstellen Sie eine Anmeldeseite

  1. Fügen Sie dem Stammverzeichnis der Website eine Seite mit dem Namen Login.aspx hinzu.

  2. Öffnen Sie die Seite Login.aspx, und wechseln Sie dann zur Entwurfsansicht.

  3. Ziehen Sie aus der Gruppe Anmelden der Toolbox ein Anmelden-Steuerelement auf die Seite.

  4. Klicken Sie mit der rechten Maustaste auf das Anmelden-Steuerelement, klicken Sie auf Eigenschaften, und legen Sie dann DestinationPageUrl auf Default.aspx fest.

  5. Speichern Sie die Seite, und schließen Sie sie dann.

Erstellen von Rollen für die Website und Zuweisen von Benutzern zu diesen Rollen

Bevor Sie mit Einschränkungen aus Sicherheitsgründen arbeiten, müssen Sie Benutzerrollen einrichten.

Aktivieren von Rollen

Damit die Einschränkungen aus Sicherheitsgründen funktionieren, müssen Rollen aktiviert sein.

So aktivieren Sie Rollen

  1. Klicken Sie in Visual Web Developer im Menü Website auf ASP.NET-Konfiguration.

    Das Websiteverwaltungs-Tool wird angezeigt.

  2. Klicken Sie auf die Registerkarte Sicherheit, und klicken Sie dann auf Rollen aktivieren.

Erstellen von Rollen und Zuweisen von Benutzerkonten zu diesen Rollen

Jetzt sind Rollen aktiviert. Sie können aber erst Zugriffsregeln erstellen, wenn Sie eine Rolle erstellen und dieser Rolle dann Benutzerkonten zuweisen.

So erstellen Sie Rollen und weisen Benutzerkonten zu

  1. Wenn das Websiteverwaltungs-Tool nicht geöffnet ist, führen Sie die folgenden Schritte aus, um es zu öffnen: Klicken Sie in Visual Web Developer im Menü Website auf ASP.NET-Konfiguration.

    Das Websiteverwaltungs-Tool wird angezeigt.

  2. Klicken Sie auf die Registerkarte Sicherheit, und klicken Sie dann auf Rollen erstellen oder verwalten.

    Sie erstellen jetzt zwei Rollen.

  3. Geben Sie customers im Feld Neue Rolle erstellen ein, und klicken Sie dann auf Rolle hinzufügen.

  4. Wiederholen Sie den vorigen Schritt, und erstellen Sie eine Rolle mit dem Namen employees.

  5. Klicken Sie im Feld Rollenname neben customers auf Verwalten.

    Dadurch gelangen Sie auf eine Seite, auf der Sie aus einer Liste Benutzerkonten auswählen können, die der Rolle customers hinzugefügt werden können.

  6. Klicken Sie im Feld Suche nach Benutzern auf Alle.

    Dadurch werden alle Benutzerkonten für die Website angezeigt. Sie können ebenfalls nach dem ersten Buchstaben des Benutzernamens suchen, wenn die Liste zu lang sein sollte.

  7. Wählen Sie neben dem Benutzernamen Customer01 das Feld in der Spalte Benutzerrolle aus.

    Der Benutzer Customer01 gehört jetzt der Rolle customers an.

  8. Klicken Sie auf Zurück, um zur Seite Neue Rolle erstellen zurückzukehren.

  9. Wiederholen Sie die vorangegangenen beiden Schritte, und fügen Sie der Rolle employees den Benutzer Employee01 hinzu.

  10. Schließen Sie die ASP.NET-Anwendungsverwaltungsseite.

Erstellen von Regeln, die den Zugriff auf Seiten selektiv gestatten oder verweigern

Wenn Sie die Einschränkungen aus Sicherheitsgründen testen möchten, müssen Sie einige Ordner und Seiten für Ihre Website erstellen und dann Sicherheitsberechtigungen für diese Ordner und Seiten festlegen.

Erstellen von notwendigen Ordnern und Seiten für diese exemplarische Vorgehensweise

Ihre Website enthält eine Siteübersichtsstruktur, die mit einigen Seiten verknüpft ist, die Sie jetzt erstellen können.

So erstellen Sie die notwendigen Ordner und Seiten

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Stammverzeichnis der Website, klicken Sie auf Neuer Ordner, und geben Sie dem Ordner den Namen EmployeesOnly.

    Der Ordner EmployeesOnly enthält eine Seite, auf die nur einige Benutzer zugreifen können.

  2. Klicken Sie mit der rechten Maustaste auf das Stammverzeichnis der Website, klicken Sie auf Neuer Ordner, und geben Sie dem Ordner den Namen Customers.

    Der Ordner Customers enthält ebenfalls eine Seite, auf die nur einige Benutzer zugreifen können.

  3. Erstellen Sie im Ordner EmployeesOnly eine neue Seite mit dem Namen Discounts.aspx.

  4. Erstellen Sie im Ordner Customers eine neue Seite mit dem Namen Support.aspx.

  5. Erstellen Sie im Stammverzeichnis der Website vier neue Seiten mit den Namen Hardware.aspx, Software.aspx, Training.aspx und Consulting.aspx.

  6. Wechseln Sie in jeder der von Ihnen neu erstellten Seiten in die Entwurfsansicht, geben Sie oben in der Seite den Seitentitel ein, und formatieren Sie den Titel als <H1>, damit Sie die Seite identifizieren können, wenn Sie sie aufrufen.

  7. Speichern Sie die neuen Seiten, und schließen Sie sie dann.

Erstellen von Zugriffsregeln

Die von Ihnen erstellte Website gestattet Benutzern den Zugriff auf verschiedene Seiten entsprechend ihrer Rollen. Deshalb müssen Sie einige Zugriffsregeln erstellen, mit denen bestimmt wird, welche Rollen Zugriff auf welche Ordner haben.

So richten Sie Zugriffsregeln für den Ordner EmployeesOnly ein

  1. Klicken Sie in Visual Web Developer im Menü Website auf ASP.NET-Konfiguration.

    Das Websiteverwaltungs-Tool wird angezeigt.

  2. Klicken Sie auf der Registerkarte Sicherheit auf Zugriffsregeln verwalten, und klicken Sie dann auf Neue Zugriffsregeln hinzufügen. Dadurch gelangen Sie auf die Seite Neue Zugriffsregel hinzufügen.

  3. Erweitern Sie unter Verzeichnis für diese Regel auswählen den Stammknoten, und klicken Sie dann auf EmployeesOnly.

  4. Klicken Sie unter Regel bezieht sich auf auf Rolle, und klicken Sie dann im Feld auf employees.

  5. Wählen Sie unter Berechtigung die Option Zulassen aus.

    Die von Ihnen erstellte Regel gewährt eine Zugriffsberechtigung auf den Ordner EmployeesOnly für jeden, der zur Rolle employees gehört.

  6. Klicken Sie auf OK.

    Die neue Regel wird in einem Raster in der Tabelle Zugriffsregeln verwalten angezeigt. Wenn ein Benutzer eine Seite aus dem Ordner EmployeesOnly anfordert, werden die Regeln der Reihe nach, von oben nach unten, überprüft, um festzustellen, ob dem Benutzer der Zugriff auf die Seite gestattet ist. Wenn der Benutzer nicht zur Rolle employees gehört, werden die Seiten in diesem Ordner nicht angezeigt.

  7. Klicken Sie auf die Verknüpfung Neue Zugriffsregel hinzufügen.

  8. Wählen Sie unter Regel bezieht sich auf die Option Alle Benutzer aus.

  9. Wählen Sie unter Berechtigung die Option Ablehnen aus, und klicken Sie dann auf OK.

    Mit der zweiten Regel für den Ordner EmployeesOnly wird gewährleistet, dass niemand, außer den Benutzern, die zur Rolle employees gehören, Zugriff auf den Ordner erhält. Die Regeln werden der Reihe nach, von oben nach unten, verarbeitet, so wie sie im Raster angezeigt werden.

    Der erste Regel (Zulassen) gestattet Benutzern den Zugriff, die zur Rolle employees gehören. Die zweite Regel (Verweigern) verweigert den Zugriff für alle anderen Benutzer. Sie können für die Anwendung eine beliebige Anzahl von Regeln zum Zulassen und Ablehnen erstellen. Wenn ein Benutzer eine Seite aus dem Ordner EmployeesOnly anfordert, werden die Regeln der Reihe nach, von oben nach unten, überprüft, um festzustellen, ob dem Benutzer der Zugriff auf die Seite gestattet ist.

Im nächsten Schritt wird die vorangegangene Prozedur für den Ordner Customers wiederholt. Sowohl die Rolle customers als auch die Rolle employees können aber verwendet werden, um Zugriff auf den Ordner Customers zu erhalten. Betrachten Sie das reale Szenario, in dem ein Unternehmen seinen Mitarbeitern beim Telefonsupport Zugriff auf die gleichen Seiten gestatten möchte, die für Kunden angezeigt werden.

So richten Sie Zugriffsregeln für den Ordner Customers ein

  1. Klicken Sie auf die Verknüpfung Neue Zugriffsregel hinzufügen.

  2. Wählen Sie unter Regel bezieht sich auf das Feld Rolle aus, und klicken Sie dann im Feld auf customers.

  3. Wählen Sie unter Berechtigung die Option Zulassen aus, und klicken Sie dann auf OK.

    Die von Ihnen erstellte Regel gewährt eine Zugriffsberechtigung auf den Ordner Customers für jeden, der zur Rolle customers gehört.

  4. Klicken Sie unter Zugriffsregeln verwalten auf Customers.

  5. Klicken Sie auf die Verknüpfung Neue Zugriffsregel hinzufügen.

  6. Wählen Sie unter Regel bezieht sich auf das Feld Rolle aus, und klicken Sie dann im Feld auf employees.

  7. Wählen Sie unter Berechtigung die Option Zulassen aus, und klicken Sie dann auf OK.

    Die von Ihnen erstellte Regel gewährt ebenfalls eine Zugriffsberechtigung auf den Ordner Customers für jeden, der zur Rolle employees gehört.

  8. Klicken Sie unter Zugriffsregeln verwalten auf Customers.

  9. Klicken Sie auf die Verknüpfung Neue Zugriffsregel hinzufügen.

  10. Wählen Sie unter Regel bezieht sich auf das Feld Alle Benutzer aus.

  11. Wählen Sie unter Berechtigung das Feld Ablehnen aus, und klicken Sie dann auf OK.

    Mit der ersten und zweiten Regel für den Ordner Customers wird gewährleistet, dass niemand, außer den Benutzern, die ein Konto in der Rolle customers oder in der Rolle employees haben, Zugriff auf den Ordner Customers erhält. Die Regeln werden der Reihe nach, von oben nach unten, verarbeitet, so wie sie im Raster angezeigt werden.

    Mit der ersten Regel (Zulassen) wird Benutzern der Zugriff gewährt, die als Mitglieder der Rolle über ein Konto verfügen. Mit der zweiten Regel (Verweigern) wird der Zugriff für alle anderen Benutzer verweigert. Sie können für die Anwendung eine beliebige Anzahl von Regeln zum Zulassen und Ablehnen erstellen. Wenn ein Benutzer eine Seite aus dem Ordner Customers anfordert, werden die Regeln der Reihe nach, von oben nach unten, überprüft, um festzustellen, ob dem Benutzer der Zugriff auf die Seite gestattet ist.

  12. Klicken Sie auf Fertig, um zur Registerkarte Sicherheit zurückzukehren.

Erstellen einer Siteübersicht und Aktivieren der Einschränkung aus Sicherheitsgründen

In diesem Teil der exemplarischen Vorgehensweise erstellen Sie eine Siteübersicht, um die Navigationsstruktur der Website zu beschreiben. Danach aktivieren Sie die Einschränkung aus Sicherheitsgründen für Siteübersichtsknoten, indem Sie die Datei Web.config bearbeiten.

Erstellen einer Siteübersicht

Wenn Sie die Websitenavigation verwenden möchten, benötigen Sie ein Verfahren, um das Layout der Seiten in der Website zu beschreiben. Die Standardmethode besteht darin, eine XML-Datei zu erstellen, die die Sitehierarchie enthält, einschließlich der Seitentitel und der URLs.

Jede Seite wird in der Siteübersicht als siteMapNode-Element dargestellt. Der Knoten auf der obersten Ebene stellt die Homepage dar, und die untergeordneten Knoten stellen Seiten dar, die sich auf einer hierarchisch niedrigeren Ebene der Website befinden.

So erstellen Sie eine Siteübersicht

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Website, und klicken Sie anschließend auf Neues Element hinzufügen.

  2. Führen Sie im Dialogfeld Neues Element hinzufügen folgende Schritte aus:

    1. Klicken Sie unter Von Visual Studio installierte Vorlagen auf Siteübersicht.

    2. Vergewissern Sie sich, dass Web.sitemap der Name im Feld Name ist.

      Hinweis:

      Die Datei muss den Namen Web.sitemap haben, und sie muss sich im Stammverzeichnis der Website befinden.

    3. Klicken Sie auf Hinzufügen.

  3. Kopieren Sie den folgenden XML-Inhalt in die Datei Web.sitemap. Dabei überschreiben Sie den Standardinhalt der XML-Datei.

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap>
      <siteMapNode title="Home" description="Home" 
           url="~/default.aspx" >
        <siteMapNode title="Products" 
             description="Our products" 
             roles="*">
          <siteMapNode title="Hardware" 
               description="Hardware we offer" 
               url="~/Hardware.aspx" />
          <siteMapNode title="Software" 
               description="Software for sale" 
               url="~/Software.aspx" />
          <siteMapNode title="Discounts" 
               description="Employee Discounts" 
               url="~/EmployeesOnly/Discounts.aspx" />
        </siteMapNode>
        <siteMapNode title="Services" 
             description="Services we offer" 
             roles="*">
          <siteMapNode title="Training" 
               description="Training" 
               url="~/Training.aspx" />
          <siteMapNode title="Consulting" 
               description="Consulting" 
               url="~/Consulting.aspx" />
          <siteMapNode title="Support" 
               description="Support" 
               url="~/Customers/Support.aspx" />
        </siteMapNode>
      </siteMapNode>
    </siteMap>
    

    Die Datei Web.sitemap enthält eine Reihe von siteMapNode-Elementen, die auf drei Ebenen geschachtelt werden. Die Struktur der einzelnen Elemente ist die gleiche. Der einzige Unterschied besteht in ihrer Position innerhalb der XML-Hierarchie.

    Die URLs der Seiten, die in der XML-Beispieldatei definiert sind, sind nicht qualifiziert. Das heißt, dass alle Seiten so behandelt werden, als seien ihre URLs relativ zum Anwendungsstamm. Sie können jedoch für eine gegebene Seite einen beliebigen URL angeben – die logische Struktur, die Sie in der Siteübersicht definieren, muss nicht dem physikalischen Layout der Seiten in Ordnern entsprechen.

    Das roles-Attribut ist nur auf zwei Knoten in der Siteübersicht festgelegt: Produkte und Dienste. Diese zwei Knoten verfügen nicht über ein url-Attribut. ASP.NET verwendet die Zugriffsregeln einer ASPX-Seite, um zu prüfen, ob der Siteübersichtsknoten für einen Benutzer sichtbar sein soll. Ohne ein url-Attribut kann bei aktivierter Einschränkung aus Sicherheitsgründen kein Benutzer die Seite anzeigen. Wenn das roles-Attribut auf ein Sternchen (*) oder ein Platzhalterzeichen festgelegt wird, wird ein vollständiger Zugriff gewährt.

  4. Speichern Sie die Datei, und schließen Sie sie dann.

Aktivieren der Einschränkung aus Sicherheitsgründen

Die von Ihnen erstellte Siteübersicht verwendet den Siteübersicht-Standardanbieter, XmlSiteMapProvider. Aus diesem Grund muss die Datei Web.config kein siteMap-Element (ASP.NET-Einstellungsschema)-Element enthalten, da ASP.NET über eine systeminterne Konfiguration für Standardsiteübersichten verfügt. Die Einschränkung aus Sicherheitsgründen ist aber nicht standardmäßig aktiviert, also muss das siteMap-Element (ASP.NET-Einstellungsschema)-Element festgelegt werden.

So aktivieren Sie die Einschränkung aus Sicherheitsgründen

  1. Klicken Sie in Visual Web Developer mit der rechten Maustaste auf das Stammverzeichnis der Website, und klicken Sie dann auf Ordner aktualisieren.

    Dies hat zur Folge, dass die Datei Web.config im Projektmappen-Explorer angezeigt wird. Sie können die Datei Web.config erstellen, indem Sie Neues Element hinzufügen auswählen oder das Tool ASP.NET-Konfiguration verwenden, wie zuvor in dieser exemplarischen Vorgehensweise veranschaulicht.

  2. Öffnen Sie die Datei Web.config.

  3. Suchen Sie nach einem siteMap-Element (ASP.NET-Einstellungsschema)-Element, sofern dieses bereits vorhanden ist.

    Wenn das siteMap-Element (ASP.NET-Einstellungsschema)-Element nicht vorhanden ist, fügen Sie den folgenden Code in das system.web-Element (ASP.NET-Einstellungsschema)-Element ein. Achten Sie darauf, dass Sie ihn nicht in ein anderes Element einfügen.

    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
      <providers>
        <add name="XmlSiteMapProvider"
          description="Default SiteMap provider."
          type="System.Web.XmlSiteMapProvider"
          siteMapFile="Web.sitemap"
          securityTrimmingEnabled="true" />
      </providers>
    </siteMap>
    
  4. Speichern Sie die Datei Web.config, und schließen Sie sie dann.

Das Feature zum Einschränken der Sicherheit bestimmt bei jeder Anforderung mithilfe der URL-Autorisierung, ob ein Benutzer Zugriff auf den mit dem siteMapNode-Element verbundenen URL hat. Je nach Anzahl der autorisierten Knoten reduziert dieser zusätzliche Aufwand die Leistung. Bei aktivierter Einschränkung aus Sicherheitsgründen können Sie mithilfe der folgenden Methoden die Leistung steigern:

  • Begrenzen Sie die Anzahl von Knoten in der Siteübersichtsdatei   Die Ausführung von Einschränkungsoperationen aus Sicherheitsgründen kann bei Siteübersichtsdateien mit mehr als 150 Knoten wesentlich länger dauern als bei einer geringeren Anzahl.

  • Legen Sie die roles-Attribute explizit für siteMapNode-Elemente fest   Beachten Sie, dass Sie das roles-Attribut für solche Knoten auf ein Sternchen (*) festlegen sollten, die jedem Client sicher angezeigt werden können. Durch die Verwendung des roles-Attributs kann die URL-Autorisierung in ASP.NET für den URL umgangen werden, der mit dem siteMapNode verbunden ist, wenn ein Benutzer eine der Rollen innehat, die in dem Attribut aufgelistet sind.

Erstellen eines Navigationsmenüs auf einer Seite

Sie haben jetzt eine Siteübersicht und einige Seiten und können daher der Website eine Navigation hinzufügen.

Alternativ können Sie ein SiteMapPath-Steuerelement oder ein Menu-Steuerelement verwenden, um die Websitenavigation anzuzeigen. Weitere Informationen finden Sie unter ASP.NET-Navigationssteuerelemente und Exemplarische Vorgehensweise: Hinzufügen einer Websitenavigation zu einer Website.

Erstellen eines Navigationsmenüs mit dem TreeView-Steuerelement

Sie verwenden das TreeView-Steuerelement als reduzierbares Navigationsmenü.

So fügen Sie ein Navigationsmenü hinzu

  1. Öffnen Sie die Seite Default.aspx, und wechseln Sie dann zur Entwurfsansicht.

  2. Ziehen Sie aus der Gruppe Daten der Toolbox ein SiteMapDataSource-Steuerelement auf die Seite.

    In seiner Standardkonfiguration ruft das SiteMapDataSource-Steuerelement seine Informationen aus der Datei Web.sitemap ab, die Sie vorher erstellt haben. Sie müssen also für das Steuerelement keine zusätzlichen Informationen angeben.

  3. Ziehen Sie aus der Gruppe Navigation der Toolbox ein TreeView-Steuerelement auf die Seite.

    Das Menü TreeView-Aufgaben wird angezeigt.

  4. Klicken Sie im Menü TreeView-Aufgaben im Feld Datenquelle auswählen auf SiteMapDataSource1.

  5. Speichern Sie die Seite.

Erstellen eines Navigationsmenüs mit dem SiteMapPath-Steuerelement

Sie verwenden das SiteMapPath-Steuerelement als Breadcrumb-Navigationsanzeige, in der Benutzern der Pfad bis zurück zur Stammseite angezeigt wird.

So fügen Sie ein Navigationsmenü hinzu

  1. Öffnen Sie die Seite Hardware.aspx, und wechseln Sie dann zur Entwurfsansicht.

    Um die Funktionsweise des SiteMapPath-Steuerelements zu veranschaulichen, platzieren Sie das Steuerelement auf einer tief geschachtelten Seite.

  2. Wenn Sie auf dieser Seite einen Titel innerhalb von <H1>-Tags hinzugefügt haben, platzieren Sie den Cursor rechts, und drücken Sie die EINGABETASTE.

  3. Ziehen Sie aus der Gruppe Navigation der Toolbox ein SiteMapPath-Steuerelement auf die Seite.

    Das Menü SiteMapPath-Aufgaben wird angezeigt. Sie müssen aber keine Datenquelle konfigurieren.

  4. Speichern Sie die Seite.

Testen der Einschränkung aus Sicherheitsgründen

Die Site kann jetzt getestet werden.

So testen Sie die Einschränkung aus Sicherheitsgründen

  1. Wechseln Sie zur Seite Default.aspx, und drücken Sie dann STRG+F5, um die Seite auszuführen.

    Im TreeView-Steuerelement sollten die Verknüpfungen Rabatt und Support nicht angezeigt werden.

  2. Klicken Sie auf Anmelden.

  3. Melden Sie sich als Customer01 an. Dabei handelt es sich um ein Benutzerkonto, das zur Rolle customers gehört.

    Im TreeView-Steuerelement sollte jetzt die Verknüpfung Support angezeigt werden.

  4. Klicken Sie auf Abmelden, und klicken Sie dann auf Anmelden.

  5. Melden Sie sich als Employee01 an. Dabei handelt es sich um ein Benutzerkonto, das zur Rolle employees gehört.

    Im TreeView-Steuerelement sollten jetzt sowohl die Verknüpfung Rabatt als auch die Verknüpfung Support angezeigt werden. Als Mitarbeiter sollten Ihnen alle verfügbaren Verknüpfungen angezeigt werden, da keine der Verknüpfungen für Mitarbeiter beschränkt ist.

  6. Klicken Sie auf der Seite Default.aspx auf Hardware, damit das SiteMapPath-Steuerelement angezeigt wird.

    Im SiteMapPath-Steuerelement sollte der Pfad von der Homepage zur Hardwareseite angezeigt werden.

Im aktuellen Zustand der Website wird die Navigationsstruktur nur auf der Homepage angezeigt. Sie können jeder Seite in der Anwendung das gleiche SiteMapDataSource-Steuerelement und das gleiche TreeView-Steuerelement hinzufügen, um ein Navigationsmenü auf der jeweiligen Seite anzuzeigen. Alternativ können Sie die Navigationsstruktur auf einer Masterseite platzieren, sodass sie automatisch auf jeder Seite angezeigt wird, auf die aus der Masterseitendatei verwiesen wird.

Nächste Schritte

In dieser exemplarischen Vorgehensweise werden die grundlegenden Funktionen der ASP.NET-Sitenavigation veranschaulicht: Navigationssteuerelemente, Rollenverwaltung und Einschränkung aus Sicherheitsgründen. Sie möchten z. B. weitere Navigationsfeatures testen. Beispielsweise möchten Sie Navigationssteuerelemente auf einer Masterseite platzieren, damit diese auf allen Seiten angezeigt werden, die auf die Masterseite verweisen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen und Verwenden von ASP.NET-Masterseiten in Visual Web Developer.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Hinzufügen einer Websitenavigation zu einer Website

Konzepte

Übersicht über die ASP.NET-Sitenavigation

Einschränken der ASP.NET-Siteübersicht aus Sicherheitsgründen

Sichern der ASP.NET-Sitenavigation

Sichern des Datenzugriffs

Erstellen von eigenen Codezugriffsberechtigungen

Weitere Ressourcen

ASP.NET-Anwendungssicherheit in Hostumgebungen