문제

나는에 사천이 사용되는 앱이 있습니다. 그러나 사용자가 관리자로 로그인하면 몇 가지 작업에서 서버 자체에 편지를 작성해야합니다. 이제 이러한 사용자가 실제 서버에 대한 권한이 없다면 (일부는 그렇지 않음) 글을 쓰지 않습니다.

내가하고 싶은 것은 몇 가지 명령에 대한 사칭을 해제하는 것입니다.

이런 일을 할 수있는 방법이 있습니까?

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

고맙습니다.

도움이 되었습니까?

해결책

응용 프로그램 풀에 필요한 적절한 권한이 있는지 확인하십시오.

그런 다음 애플리케이션 풀 ID로 되돌려면 다음을 실행하십시오.

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 사용자를 가장합니다. a WindowsImpersonationContext 그것은 있습니다 실행 취소 사칭 컨텍스트를 다시 되돌아가는 방법.

페이지의 인증을 끄고 나머지 코드 중에 인증 된 사용자를 수동으로 가장합니다.

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

이것은 그 마지막 부분에 대한 언급이 있지만 기본적으로 사용자를 가장합니다.

이것은 페이지로의 통화 시작 부분에서 가장해야한다는 것을 의미합니다. 필요할 때 끄고 끄고 완료되면 다시 켜지 만 실행 가능한 솔루션이어야합니다.

방금 폴더에 "인증 된 사용자"에게 권한을 쓰는 것이 었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top