الأمن خريطة الموقع تقليم باستخدام الأدوار سمات فقط، وعدم السماح / نفي قواعد في أماكن أخرى

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

سؤال

وأنا أدرك أن علامة لديه "أدوار" سمة للتعويض عن العقد التي لم يكن لديك "رابط" السمة، والتي يمكن حلها بطرق أخرى. أنا غير مهتم في هذه الطرق الأخرى، على الرغم من أنني كنت ترغب في الحصول على كل ما عندي من تعيين الأذونات في ملف خريطة الموقع الخاص بي. كيفية تحقيق ذلك؟

وأنا باستخدام مخصص RoleProvider، MembershipProvider العرف، وXmlSiteMapProvider الافتراضية. ولدي أيضا IHttpModule الأمن لمنع الناس من الوصول إلى هناك باستخدام URL المباشر. أنا مستعد لنهج مختلفة.

ويرجع الفضل في ذلك مسبقا!

هل كانت مفيدة؟

المحلول

ويمكنك تنفيذ XmlSiteMapProvider الخاصة بك وتجاوز أسلوب IsAccessibleToUser.

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     return <condition in which access is allowed>
}

نصائح أخرى

في النهاية أنا نفذت أمن بلدي تقليم عن طريق اشتقاق من XmlSiteMapProvider. وكان من السهل بما فيه الكفاية.

public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
    return CustomSecurityTrim(base.GetChildNodes(node));
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top