是否有 .net core 2.2 方法来执行 WindowsImpersonationContext?
Is there a .net core 2.2 way of doing WindowsImpersonationContext?
这不起作用private static WindowsImpersonationContext impersonationContext;
我需要能够做到这一点
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
然后这个
if (impersonationContext != null)
{
impersonationContext.Undo();
impersonationContext = null;
}
我在看这个question/answer:WindowsImpersonationContext & Impersonate() not found in ASP.Core
然而,这似乎不是一个很好的匹配,是吗?
ASP.NET 核心不实现模拟。应用程序 运行 具有所有请求的应用程序标识,使用应用程序池或进程标识。如果您需要代表用户明确执行操作,请使用 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);
});
这不起作用private static WindowsImpersonationContext impersonationContext;
我需要能够做到这一点
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
然后这个
if (impersonationContext != null)
{
impersonationContext.Undo();
impersonationContext = null;
}
我在看这个question/answer:WindowsImpersonationContext & Impersonate() not found in ASP.Core
然而,这似乎不是一个很好的匹配,是吗?
ASP.NET 核心不实现模拟。应用程序 运行 具有所有请求的应用程序标识,使用应用程序池或进程标识。如果您需要代表用户明确执行操作,请使用 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);
});