سؤال

إذن هذا هو الكود الحالي الخاص بي:

List<string> rowGroups = GetFileGroups((int)row.Cells["document_security_type"].Value);
bool found = false;
System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent());

foreach (string group in rowGroups)
{
  if (p.IsInRole(group))
  {
    found = true;
    break;
  }
}

لقد تم ذلك منذ شهرين بواسطة شخص ما وأواجه صعوبة في فهم سبب عدم نجاحه.لقد انتقلت الشركة مؤخرًا من اسم نطاق إلى آخر.لذلك كنت أشعر بالفضول لمعرفة وحدة التحكم بالمجال التي ستستخدمها وظيفة p.IsInRole("String").أفترض أنه سيستخدم DC الافتراضي مهما كان ما يستخدمه الكمبيوتر.

العنصر الغريب هو أن أجهزة الكمبيوتر الموجودة في المكتب حيث يتم تشغيل هذا يمكن أن تكون في مجالين منفصلين.في ال List<string> كائن، لقد حصلت على كلا المجالين ممكن.لذلك يمكن أن يحتوي على عناصر مثل "domainA\groupA" و"domainA\userB" وdomainB\groupC و/أو "domainB\userD".

لذا فإن مشكلتي الرئيسية هي أن وظيفة IsInRole لا تعود صحيحة أبدًا.أعلم أنه ينبغي ذلك، حتى أنني قمت باختباره مع مستخدمي domainA\Domain وما زلت أحصل على إرجاع خاطئ.

أيه أفكار؟تغيير الكود ممكن، لكنه غير مرغوب فيه.أنا لست 100٪ حتى أستطيع تجميعها...

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

المحلول 2

حسنًا، لإصلاح المشكلة، كان عليّ فقط إضافة كل مستخدم للمجموعة على وجه التحديد بدلاً من اسم المجموعة...

أي شخص آخر لديه أي أفكار؟

نصائح أخرى

ولدي أن نشير، وكنت في الواقع الهروب الطابع الخاص بك '\' بشكل صحيح داخل سلاسل الخاص بك؟ كما في "domainA \\ groupA"؟

ورأيت المشاكل عندما يحاول الناس على استخدام قوائم البريد الإلكتروني Outlook في Active Directory للأمن على أساس الدور. هذه تظهر في Active Directory و هي الصعب معرفة ما عدا مجموعات الأمان الفعلية (منها يمكنك الرجوع في قوائم ACL، الخ). وقد المشرف بالتحقق مهما المجموعات التي تستخدم هي مجموعات الأمان.

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