Domanda

Ho un sito ASP.Net, in cui sto cercando di utilizzare i ruoli di autenticazione di Windows e Active Directory per limitare l'accesso ad alcune pagine. Ho guardato un pagina del tutorial da Scott Gu , ma non riesco a ottenere quello che voglio.

Sto ignorando il nodo principale nel mio SiteMapDataSource . Voglio mostrare i " Documenti " nodo a tutti gli utenti, ma limita la visualizzazione di " Cerca " e " Carica " ruoli in 2 ruoli diversi. Sono nel " DOMINIO \ validrole " ma non in " DOMAIN \ madeuprole " ;. Con la sitemap e web.config di seguito, visualizzo tutti i nodi. Se rimuovo ruoli = " * " da " Documents " nodo (come suggerito da Scott Gu), non visualizzo alcun nodo.

Esiste un modo per limitare la visualizzazione di singoli nodi figlio senza dover scrivere codice personalizzato?

Questa è la mia sitemap:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/Default.aspx" 
                 title="Home">
        <siteMapNode title="Documents" roles="*">
            <siteMapNode url="~/Documents/Search.aspx" 
                         title="Search Documents" 
                         roles="DOMAIN\validrole" />
            <siteMapNode url="~/Documents/Upload.aspx" 
                         title="Upload Documents" 
                         roles="DOMAIN\madeuprole" />
            <siteMapNode url="~/Documents/Publish.aspx" 
                         title="Publish Documents" />
        </siteMapNode>
        <siteMapNode title="Users" roles="*">
            <siteMapNode url="~/Users/Search.aspx" 
                         title="Search Users" 
                         roles="DOMAIN\validrole" />
        </siteMapNode>
    </siteMapNode>
</siteMap>

E questa è la sezione pertinente del mio web.config:

<authentication mode="Windows"/>
<authorization>
    <allow roles="DOMAIN\validrole"/>
    <deny users="*"/>
</authorization>

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

Soluzione

Ordinati: è necessario impostare l'autorizzazione per la pagina nel file Web.config in questo modo:

<location path="Documents/Upload.aspx">
    <system.web>
        <authorization>
            <allow roles="DOMAIN\madeuprole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

L'ho provato con il percorso " ~ / Documents / Upload.aspx " , ma non ha funzionato - deve essere un percorso relativo al file di configurazione.

Inoltre, ho dovuto inserire un URL nei miei nodi Sitemap, in questo modo:

<siteMapNode title="Documents" roles="*" url="Made-Up.aspx">

Questo ha impedito che tutto scomparisse, anche se non ho idea del perché. Non sto visualizzando l'URL, quindi qualsiasi trucco inventato fa il trucco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top