سؤال

لديّ مخصص sitemapprovider و roleprovider الذي يعمل معًا بشكل صحيح: IsAccessibleToUser عائدات false إذا لم يتم ذكر دور المستخدم الحالي في SiteMapNode.Roles للصفحة المطلوبة.

لذا فإن فتات الخبز أو القائمة لا تعرض عنصرًا.

لكن لا يزال بإمكان المستخدم الكتابة الآن عرض عنوان URL مباشرة وفتح صفحة. كيف يمكنني منع مثل هذا السلوك؟

أيضا لدي إعدادات web.config التالية:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
هل كانت مفيدة؟

المحلول

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
    var roles = node.Roles.OfType<string>();
    if (roles.Contains("*") || (roles.Count(r => context.User.IsInRole(r)) > 0))
    {
        return true;
    }
    else
    {
        throw new InsufficientRightsException();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top