Flo*_*Flo 15 sharepoint usergroups
如何检查用户(不是当前登录的用户)是否是某个组的成员?尝试从他不是成员的组中检索用户会导致SPException,因此无法检查null.
那你怎么解决这个问题呢?目前,我考虑在SPGroup.Users.XML字符串中搜索用户名,或者迭代所有组成员并检查登录名.
更新: 我忘了提到我想避免使用异常处理来检查用户的成员资格.
Ana*_*nov 18
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)
我通过使用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)