Sharepoint:检查用户是否是组的成员

Flo*_*Flo 15 sharepoint usergroups

如何检查用户(不是当前登录的用户)是否是某个组的成员?尝试从他不是成员的组中检索用户会导致SPException,因此无法检查null.

那你怎么解决这个问题呢?目前,我考虑在SPGroup.Users.XML字符串中搜索用户名,或者迭代所有组成员并检查登录名.

更新: 我忘了提到我想避免使用异常处理来检查用户的成员资格.

Ana*_*nov 18

为SPUser和静态方法创建一个Extension类:

public static class SPUserExtension {
   public static bool InGroup(this SPUser user, SPGroup group)
      {
        return user.Groups.Cast<SPGroup>()
          .Any(g => g.ID == group.ID);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在SPUser对象上调用此方法:

SPUser user;
SPGroup group;
//...
bool isMember = user.InGroup(group);
Run Code Online (Sandbox Code Playgroud)


Ale*_*gas 6

我通过使用LINQ编写扩展方法来完成此操作.SPGroup继承自SPPrincipal,因此您应该能够将其传递给principal参数:

public static bool Contains(this SPRoleAssignmentCollection rac, SPPrincipal principal)
{
    XElement racXml = XElement.Parse(rac.Xml);
    return racXml.Elements("permission").Any(vw => (int)vw.Attribute("memberid") == principal.ID);
}
Run Code Online (Sandbox Code Playgroud)