Подтвердить что ты не робот

Могу ли я отключить олицетворение только в нескольких экземплярах

У меня есть приложение, в котором используется олицетворение. Но когда пользователь регистрируется как администратор, несколько операций требуют, чтобы они записывали на сам сервер. Теперь, если эти пользователи не имеют прав на самом сервере (некоторые нет), они не позволят им писать.

Что я хочу сделать, это отключить олицетворение только для нескольких команд.

Есть ли способ сделать что-то вроде этого?

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

Спасибо.

4b9b3361

Ответ 1

Убедитесь, что у пула приложений есть необходимые права.

Затем, когда вы хотите вернуться к идентификатору пула приложений... запустите следующее:

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 { }
}

Ответ 2

Я не уверен, что это предпочтительный подход, но когда я захотел сделать это, я добавил экземпляр WindowsIdentity и называется Impersonate. Это позволяет последующему коду выдавать себя за другого пользователя Windows. Он возвращает WindowsImpersonationContext, который имеет Undo, который снова возвращает контекст олицетворения.

Ответ 3

Вы можете отключить аутентификацию для страницы, а затем вручную олицетворить аутентифицированного пользователя в течение оставшейся части вашего кода.

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

Это ссылка на эту последнюю часть, но в основном вы олицетворяете User.Identity

Это будет означать, что вам нужно будет выдавать себя за начало любого вызова страницы, отключать ее, когда вам это нужно, а затем снова включить ее, когда это будет сделано, но это должно быть приемлемым решением.

Ответ 4

Я только что закончил тем, что дал папкам права на запись для "Аутентифицированных пользователей"