这不起作用private static WindowsImpersonationContext impersonationContext;
我需要能够做到这一点
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
然后这个
if (impersonationContext != null)
{
impersonationContext.Undo();
impersonationContext = null;
}
我正在查看以下问题/答案:WindowsImpersonationContext & Impersonate() not found in ASP.Core
但这似乎不是一个很好的匹配,对吗?
答案 0 :(得分:1)
ASP.NET Core没有实现模拟。应用程序使用应用程序池或进程标识以所有请求的应用程序标识运行。如果需要代表用户明确执行操作,请使用WindowsIdentity.RunImpersonated。
WindowsIdentity.RunImpersonated(user.AccessToken, () =>
{
var impersonatedUser = WindowsIdentity.GetCurrent();
var message =
$"User: {impersonatedUser.Name}\tState: {impersonatedUser.ImpersonationLevel}";
var bytes = Encoding.UTF8.GetBytes(message);
context.Response.Body.Write(bytes, 0, bytes.Length);
});