0

我想创建一个函数来确定通过参数传递其 ID 的用户是否是管理员。我可以为当前登录的用户执行此操作 -

        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) 

我怎样才能做到这一点?任何帮助表示赞赏。

4

3 回答 3

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;
    }
于 2012-07-02T15:52:25.400 回答
0

看来您需要查看 WindowsIdentity 的声明,以查看是否有方法可以从其字符串名称中检索用户身份。

于 2012-06-28T19:19:29.283 回答
0

您可以尝试使用此代码

if(principal.Identity.IsAuthenticated)
{
    //Passed
}
于 2012-06-28T19:20:56.663 回答