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

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

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

Есть ли способ сделать что-то подобное?

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