如何以编程方式确定SharePoint中网站的3个权限组访问者/成员/所有者?
在SharePoint中,我们有3个预先确定的权限组:如何以编程方式确定SharePoint中网站的3个权限组访问者/成员/所有者?,sharepoint,permissions,Sharepoint,Permissions,在SharePoint中,我们有3个预先确定的权限组: 来访者 成员 所有者 作为/_layouts/permsetup.aspx页面中的设置 (站点设置->人员和组->设置->设置组) 如何以编程方式获取这些组名 (页面逻辑被Microsoft混淆,因此在Reflector中无法执行任何操作)SPWeb类上有以下属性: SPWeb.AssociatedVisitorGroup SPWeb.AssociatedMemberGroup SPWeb.AssociatedOwnerGroup
- 来访者
- 成员
- 所有者
(页面逻辑被Microsoft混淆,因此在Reflector中无法执行任何操作)SPWeb类上有以下属性:
- SPWeb.AssociatedVisitorGroup
- SPWeb.AssociatedMemberGroup
- SPWeb.AssociatedOwnerGroup
嘿,我是凯文,我是微软SharePoint权限的PM DJ的回答是完全正确的,但我要警告你,根据你所做的,这可能不是最可靠的方法。用户可能会将这些组吹走,而这些关联也会消失。我肯定会在你获取这些东西的过程中建立一些备份逻辑 我发现各种“关联…”属性通常为空。唯一可靠的方法是在SPWeb上使用属性包:
- 访客:
vti\U协会访客组
- 成员:
vti\U协会成员组
- 所有者:
vti\u协会所有者组
int idOfGroup = Convert.ToInt32(web.Properties["vti_associatemembergroup"]);
SPGroup group = web.SiteGroups.GetByID(idOfGroup);
但是,由于关联可能丢失,这将在上述代码中引发异常。更好的方法是:
public static SPGroup GetMembersGroup(SPWeb web)
{
if (web.Properties["vti_associatemembergroup"] != null)
{
string idOfMemberGroup = web.Properties["vti_associatemembergroup"];
int memberGroupId = Convert.ToInt32(idOfMemberGroup);
foreach (SPGroup group in web.SiteGroups)
{
if (group.ID == memberGroupId)
{
return group;
}
}
}
return null;
}
请注意,使用sharepoint 2007或2003标记是很好的,因为这与sharepoint 2007或2003相关。因为我无法确定这是针对2007的(我面前没有2003),所以我认为最好使用通用sharepoint标记。类似地,我也不会将我的c#问题标记为“c#v1.0”、“c#v2.0”等。没问题,这只会有助于给出答案。检查当前用户是否是成员的简单方法:SPContext.current.Web.AssociatedOwnerGroup.ContainesCurrentUsers谢谢,我完全错过了这些。嗨,凯文。我们有多个子站点,每个子站点上都有这3个自定义组,我们已经在提到的权限页面中设置了它们。这或多或少是我们为每个子站点管理不同权限(组)的唯一方法。我没有做任何关于修改实际设置的定制。目标是获得每个组中所有用户的列表,以建立邮件列表。在SharePoint中,人们利用其许可权利进行伤害和愚蠢行为的风险永远存在。