Laden...

Navigation personalisieren

Erstellt von Robsta10 vor 17 Jahren Letzter Beitrag vor 16 Jahren 4.457 Views
R
Robsta10 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren
Navigation personalisieren

Hallo Leute!

Meine Website verwendet das Menu Navigation Web Control für die Navigation. Dem zugrunde liegt ein File namens web.sitemap. Nun existieren in meiner Applikation verschiedene Benutzer, die jeweils nur bestimmte Seiten sehen dürfen.

Ein ganz normaler Benutzer darf beispielsweise die Admin-Seiten nicht sehen. Ist ein solch normaler Benutzer also eingeloggt, sollen Admin-Seiten folglich gar nicht in der Navigation zu finden sein.

Wie kann ich abhängig vom eingeloggten Benutzer die Navigation personalisieren? Ich könnte mir schon die eine oder andere Lösung vorstellen, allerdings würde ich gerne wissen, wie man das in ASP.NET machen soll.

Danke im Voraus,
Robert

IDE: Visual Studio 2005
Framwork: .Net 2.0

726 Beiträge seit 2003
vor 17 Jahren

Hallo,
du könntest bspw. mehrere sitemaps anlegen ( für jede Rolle eine)


<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="Default.aspx" title="Home"  description="Home">

    <siteMapNode siteMapFile="~/Navigation/Admin.sitemap" roles="admin" />
    <siteMapNode siteMapFile="~/Navigation/User.sitemap" roles="users" />
   
  </siteMapNode>
</siteMap>

W
799 Beiträge seit 2004
vor 17 Jahren

"Eigentlich* müsstest du darauf in der web.sitemap verzichten können. Lege die Zugriffsrechte für die einzelnen Gruppen in der web.config fest, und setze für die sitemap securityTrimming auf true, dann haut er dir automatisch die Punkte raus, auf die der angemeldete User in seiner Gruppe keine Rechte hat.

R
Robsta10 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Danke.

Würde das dann bedeuten, dass ich eine Hauptnavigation besitze, die dann je nach Zugehörigkeit eines Benutzers zu einer Rolle dynamisch mit Unter-Sitemaps erweitert wird?

Werden Knoten, die auf eine Unter-Sitemap verweisen, angezeigt oder nicht, wenn sie nicht der aktuellen Rollenzugehörigkeit entsprechen?

Was ist, wenn es keine Rollen in meiner App gibt?

LG,
Robert

IDE: Visual Studio 2005
Framwork: .Net 2.0

R
Robsta10 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Danke Waschbecken.

Hatte gerade meinen Beitrag (#4) geschrieben, als ich deine Antwort bekommen habe.

Tja, was mach ich, wenn ich keine Rollen definiert habe, die Personalisierung quasi auf Benutzerebene durchführen möchte?

(Ich müsste dafür nämlich einen eigenen Roleprovider schreiben...)

LG,
Robert

IDE: Visual Studio 2005
Framwork: .Net 2.0

R
Robsta10 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

So, hab das Problem für meinen Fall gelöst.

In der web.config Datei habe ich mittels folgendem Code den Zugriff auf Seiten in einem gewissen Ordner beschränkt:


  <location path="~/Admin">
    <system.web>
      <roleManager enabled="true"/>
      <authorization>
        <allow users="mro"/>
        <deny users="*"/>        
      </authorization>
    </system.web>
  </location>

Mit dieser Konfiguration habe ich die SiteMap richtig eingestellt. Auf diese Weise kann man securityTrimming einschalten.


    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
      <providers>
        <add name="XmlSiteMapProvider"
          description="Default SiteMap provider."
          type="System.Web.XmlSiteMapProvider "
          siteMapFile="Web.sitemap"
          securityTrimmingEnabled="true" />
      </providers>
    </siteMap>

LG,
Robert

IDE: Visual Studio 2005
Framwork: .Net 2.0

C
36 Beiträge seit 2006
vor 16 Jahren

Original von CB.NET
Hallo,
du könntest bspw. mehrere sitemaps anlegen ( für jede Rolle eine)

  
<?xml version="1.0" encoding="utf-8" ?>  
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >  
  <siteMapNode url="Default.aspx" title="Home"  description="Home">  
  
    <siteMapNode siteMapFile="~/Navigation/Admin.sitemap" roles="admin" />  
    <siteMapNode siteMapFile="~/Navigation/User.sitemap" roles="users" />  
     
  </siteMapNode>  
</siteMap>  
  

Wollte gerade mal rollenspezifische Sitemaps nach deinem Schema einbinden. Hat leider nicht geklappt. Bekomme folgende Fehlermeldung:


Unbekanntes roles-Attribut. Beachten Sie bei Attributnamen die Groß-/Kleinschreibung.

Ich habs mit dem "normal" geschriebenen Namen probiert, sowie mit dem komplett-klein geschriebenen. Hat leider nicht geklappt. Hast du nen Tipp woran es scheitern könnte?