كيف تؤثر على العقد الفردية عند تقليم الأمان خريطة سيتيم؟
-
05-07-2019 - |
سؤال
لديّ موقع 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 ، لذا فإن أي شخص يقوم بالخدعة.