Ověřování formulářů s Sitemap a asp: kontrola Menu

hlasů
1

Mám stránky s 2 částí - jedna pro zákazníky a jeden pro administrátory, v podstatě. Každá sekce je ve svém vlastním adresáři s vlastním web.config a mapa stránek. Bezpečnost a přístup funguje.

Když jsem se jako administrátor přihlášen, chci vidět, položky menu, které odkazují na další části, nicméně. Přidal jsem odkazy na Sitemap, např:

<siteMapNode url=~/Customer/Default.aspx?3 title=Customer Site
description=Switch to customer site roles=Administrator/>

Zdá se, že nemají žádný vliv, protože stále vidím položku při přihlášeni jako zákazníka. Po zapnutí zabezpečení ořezávání, stejně jako v

<siteMap enabled=true>
  <providers>
    <add name=InternalSiteMap type=System.Web.XmlSiteMapProvider 
        siteMapFile=~/Internal/Internal.sitemap />
    <add name=CustomerSiteMap type=System.Web.XmlSiteMapProvider 
     siteMapFile=~/Customer/Customer.sitemap securityTrimmingEnabled=true />
  </providers>
</siteMap>

všechny položky menu jsou pryč.

Vlastně jsem web.configs ve vnitřním i složek zákazníků, například pro zákazníka:

<?xml version=1.0 encoding=utf-8?>
<configuration>
  <system.web>
    <authorization>
      <allow roles=Customer />
      <deny users=* />
    </authorization>
  </system.web>
</configuration>

a správce:

<?xml version=1.0 encoding=utf-8?>
<configuration>
    <system.web>
        <authorization>
            <allow roles=Administrator />
            <deny users=* />
        </authorization>
    </system.web>
</configuration>

Opět platí, že povolení na stavební práce, a když jsem přihlášen jako zákazník a já klikněte na odkaz interním webu v nabídce, mám je přesměrován na přihlašovací stránku. Jako správce, můžu proklikat na stránky administrátora. Jakmile zapnu bezpečnost ořezávání pro poskytovatele mapa stránek, která by měla přijmout odkazy, které nejsem povolených pro vypnutí v nabídce je celá nabídka nezmizí. Co jsem chybí? Musím nakonfigurovat kontrolu asp.menu spolupracovat s tím?

UPDATE: jsem dal odměnu na tuto otázku, protože jsem stále nemůže dostat do práce. Máme sklon vyhazovali ovládání menu a psaní naše vlastní, ale pokud někdo může poskytnout náznak, který by byl výhodný samozřejmě. Opět - není problém s bezpečností - role a přístupová pravidla fungovat podle očekávání. Je s ovládáním z nabídky a zabezpečení ořezávání. Menu zmizí Dohromady při zabezpečení ořezávání zapnuta pro sitemap.

Aktualizace: Díky za nalezení tohoto příspěvku v blogu, Pavel. To, co jsem se dozvěděl z toho, že pokud existuje mapa stránek položky, které nemají cestu a URL (což platí i pro některé z mých submenues), ovládací prvek nelze usoudit oprávnění z nastavení v web.config, a vy budete muset upřesnění role v sitemap. V opačném případě budou ve výchozím nastavení skryty.

Položena 29/10/2009 v 18:04
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Z Horizontálního menu zmizí securityTrimmingEnabled = "true" :

Ujistěte se, že každá role má přístup k (nevyužité) fiktivní siteMapNode u kořene tím, včetně role = „*“ v web.sitemap je uvedeno níže:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap  enableLocalization="true"
     xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="" title="" roles="*"  description="">
      <siteMapNode url="~/default.aspx" resourceKey="siteMapHome" 
       title="Home" roles="admin,account" description="" />
<!-----More nodes-->
Odpovězeno 14/12/2009 v 03:39
zdroj uživatelem

hlasů
0

http://www.vbforums.com/showthread.php?p=3625975

Zkontrolujte, zda je přihlášený uživatel má roli správce.

Upravit:

Jsem také docela jistý, že si není ment specifikovat roli v siteMapNode. Věřím Role Based mapy stránek odpracovat existující role, například pokud má uživatel přístup k cestě, že místo poznámka specifys pak ji zobrazit.

Také zadat cestu v webs.config.

<location path="admin/">
    <system.web>
        <authorization>
            <allow roles="Admin"  />
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

A konečně odstranit ‚~‘ z vašeho webu mapy tak, že srovnání bude odpovídat.

Jakmile je to hotovo, a pokud je to stále nefunguje, sloučit web.configs aby se ujistil, práva přístupu nejsou ztraceny.

Odpovězeno 29/10/2009 v 18:13
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more