我想创建一个函数来确定其ID是否带参数传递的用户是否为admin。我可以使用 -
为当前登录的用户执行此操作 public static bool IsAuthorizedUser()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
但我想检查传入的任何用户。因此签名将变为
public static bool IsAuthorizedUser(string username_to_check)
我该怎么做?任何帮助表示赞赏。
答案 0 :(得分:1)
我能够通过UserPrincipal让我的工作变得如此。感谢您的所有反馈。
public static bool IsAuthorizedUser(string userId)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userId);
bool result = false;
if(usr == null)
{
Console.WriteLine("usr is null");
}
else
{
foreach (Principal p in usr.GetAuthorizationGroups())
{
if (p.ToString() == "Administrators")
{
result = true;
}
}
}
return result;
}
答案 1 :(得分:0)
看起来你需要查看WindowsIdentity的声明,看看是否有方法从它的字符串名称中检索用户身份。
答案 2 :(得分:0)
您可以尝试使用此代码
if(principal.Identity.IsAuthenticated)
{
//Passed
}