我正在尝试确定特定组是否具有对特定网站集的“读取”访问权限。
我已经尝试了一天半但感觉好像找到了不同解决方案的三半!
到目前为止我的代码片段是:
using (SPSite site = new SPSite(this.GenerateAbsoluteUri(moduleCode, academicYear)))
{
using (SPWeb web = site.OpenWeb())
{
for (int i = web.SiteGroups.Count - 1; i >= 0; i--)
{
SPGroup group = web.SiteGroups[i];
if (Regex.IsMatch(group.Name, theGroupImLookingFor))
{
但接着是什么?!
我的大部分Google搜索结果都告诉我角色,但我不知道如何将角色与群组联系起来。
请帮忙!
答案 0 :(得分:2)
要为用户(帐户)或SharePoint组分配权限,我们需要按特定顺序查看某些对象。我们需要做的第一件事是获取我们想要将角色分配给的安全主体(SPUser或SPGroup)。我们需要做的下一件事是获得我们想要分配的实际权限(角色)(例如:读取,完全控制等...)。然后我们需要创建一个SPRoleAssignment对象,并在构造函数中将它传递给我们要为其分配权限的SPUser或SPGroup(安全主体)。现在我们需要将角色定义添加到角色分配对象的RoleDefinitionBindings集合中。然后我们需要将实际角色分配添加到Web(站点)并更新Web。以下是完整的代码lisitng。
// Create the site that contains our list
using(SPSite oSite = new SPSite("<<my site url>>"))
{
// Open the web object
using(SPWeb oWeb = oSite.OpenWeb())
{
// Get the group that we want to add the user to
SPGroup oGroup = oWeb.Groups["<<group name>>"];
// Get the role definition we want to assign ex: Full Control
SPRoleDefinition oRole = oWeb.RoleDefinitions["<< role name>>"];
// Create the role assignment object
SPRoleAssignment oRoleAssignment = new SPRoleAssignment(oGroup);
// Add the role definition to the role assignemnt.
// This will assign the specific permission to the security principal for this role assignemnt.
oRoleAssignment.RoleDefinitionBindings.Add(oRole);
// Now we need to add the role assignment to the web
oWeb.RoleAssignments.Add(oRoleAssignment);
// Now update the web
oWeb.Update();
}
}
答案 1 :(得分:0)
来自我自己代码的Heres片段(Sharepoint 2010)。 创建角色:
SPRoleDefinition network_role = new SPRoleDefinition();
network_role.BasePermissions = SPBasePermissions.AddListItems |
SPBasePermissions.BrowseDirectories |
SPBasePermissions.EditListItems |
SPBasePermissions.DeleteListItems;
network_role.Name = "Network - Project Member";
network_role.Description = "Provides permissions required for a member of a project.";
web.RoleDefinitions.Add(network_role);
向群组添加角色:
var assign = new SPRoleAssignment(oweb.SiteGroups["Network Project - " + item.Code]);
assign.RoleDefinitionBindings.Add(network_role);