كيف تؤثر على العقد الفردية عند تقليم الأمان خريطة سيتيم؟

StackOverflow https://stackoverflow.com/questions/1807624

سؤال

لديّ موقع ASP.NET ، أحاول فيه استخدام أدوار Windows Authentication و Active Directory للحد من الوصول إلى بعض الصفحات. لقد نظرت إلى أ صفحة البرنامج التعليمي من Scott Gu, ، لكن لا يمكنني تحقيق ما أريد.

أنا أتجاهل عقدة الجذر في بلدي SiteMapDataSource. أريد أن أعرض عقدة "المستندات" لجميع المستخدمين ، ولكن الحد من عرض أدوار "البحث" و "تحميل" إلى دوران مختلفان. أنا في "المجال validrole" ولكن ليس في "المجال madeuprole". مع sitemap و web.config أدناه ، أحصل على جميع العقد المعروضة. إذا قمت بإزالة roles="*" من عقدة "المستندات" (كما اقترح Scott Gu) ، لم أحصل على أي عقد معروضة.

هل هناك طريقة يمكنني من خلالها عرض عرض العقد الفردية دون الحاجة إلى كتابة رمز مخصص؟

هذا هو خارطة البيت الخاصة بي:

<?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>

وهذا هو القسم ذي الصلة من 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>
هل كانت مفيدة؟

المحلول

فرز - تحتاج إلى إعداد تفويض إلى الصفحة في ملف web.config مثل هذا:

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

لقد جربت هذا بالمسار "~/Documents/Upload.aspx", ، لكن هذا لم ينجح - يجب أن يكون مسارًا يتعلق بملف التكوين.

أيضا ، اضطررت إلى وضع عنوان URL في العقد الخريطة ، مثل هذا:

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

هذا أوقف كل شيء يختفي ، على الرغم من أنه ليس لدي أي فكرة عن السبب. أنا لا أعرض عنوان URL ، لذا فإن أي شخص يقوم بالخدعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top