سؤال

لدي التطبيق الذي لديه الانتحال المستخدمة في جميع أنحاء.ولكن عندما يقوم المستخدم بتسجيل الدخول كمسؤول بضعة العملية تتطلب منهم أن يكتبوا على الملقم نفسه.الآن إذا كان هؤلاء المستخدمين ليس لديهم حقوق على الملقم الفعلي (بعض لا) أنها لن تسمح لهم الكتابة.

ما أريد القيام به هو إيقاف التمثيل لمجرد بضع الأوامر.

هل هناك طريقة لفعل شيء مثل هذا ؟

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

شكرا لك.

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

المحلول

تأكد من تجمع التطبيقات لديك الحقوق المناسبة التي تحتاج إليها.

ثم عندما تريد أن تعود إلى هوية تجمع التطبيق...تشغيل التالية:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

نصائح أخرى

أنا لست متأكدا إذا كان هذا هو النهج المفضل ولكن عندما أردت أن تفعل هذا أنا جديدة قد تصل مثيل WindowsIdentity ودعا انتحال شخصية الأسلوب.هذا يسمح اللاحقة رمز انتحال شخصية مختلفة مستخدم Windows.تقوم بإرجاع WindowsImpersonationContext أن التراجع الأسلوب الذي يعود الانتحال السياق مرة أخرى.

يمكنك إيقاف تشغيل المصادقة على الصفحة ومن ثم يدويا انتحال صفة المستخدم المصادق عليه خلال الفترة المتبقية من التعليمات البرمجية الخاصة بك.

http://support.microsoft.com/kb/306158

هذا إشارة إلى أن الجزء الأخير, ولكن أساسا كنت انتحال شخصية المستخدم.الهوية

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

انتهى للتو إعطاء المجلدات أذونات الكتابة إلى "مصادقة المستخدمين"

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