Gewusst wie: Arbeiten mit Rollen
Letzte Änderung: Samstag, 30. April 2011
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Erstellen einer Rollendefinition
Zuweisen einer Rolle auf einer Website zu einem Benutzer
Erstellen einer SharePoint-Gruppe und Hinzufügen der Gruppe zu einer Rolle
Verfügbar in SharePoint Online
Mithilfe des Clientobjektmodells können Sie benutzerdefinierte Rollendefinitionen innerhalb von Websitesammlungen erstellen und neuen oder vorhandenen Benutzern und Gruppen bestimmte Rollen für Websites, Listen und Listenelemente zuweisen. Ähnlich wie Sie die SPRoleDefinitionBindingCollection-Klasse im Serverobjektmodell verwenden, können Sie einen Benutzer oder eine Gruppe, zusammen mit einem RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection), der Sammlung von Rollenzuweisungen für ein bestimmtes Objekt hinzufügen.
Erstellen einer Rollendefinition
Verwenden Sie zum Erstellen einer Rollendefinition in der Sammlung von Rollendefinitionen für eine Websitesammlung die BasePermissions-Klasse (JavaScript: BasePermissions), um einen Berechtigungssatz zu definieren, definieren Sie mit der RoleDefinitionCreationInformation-Klasse (JavaScript: RoleDefinitionCreationInformation) eine Rolle, die den Berechtigungssatz enthält, und fügen Sie dann die neue Rolle der Sammlung von Rollendefinitionen hinzu. Im folgenden Beispiel wird das Erstellen einer Rolle zum Erstellen und Verwalten von Berechtigungen veranschaulicht. Mit der Order-Eigenschaft (JavaScript: order) wird angegeben, dass die neue Rolle als viertes Element der benutzerdefinierten Rollendefinitionen angezeigt wird, die auf der Seite Berechtigungsstufen der Websitesammlung aufgelistet werden.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateRoleDefinition
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
Web oWebsite = clientContext.Web;
BasePermissions permissions = new BasePermissions();
permissions.Set(PermissionKind.CreateAlerts);
permissions.Set(PermissionKind.ManageAlerts);
RoleDefinitionCreationInformation roleCreationInfo = new RoleDefinitionCreationInformation();
roleCreationInfo.BasePermissions = permissions;
roleCreationInfo.Description = "A new role with create and manage alerts permission";
roleCreationInfo.Name = "Create and Manage Alerts";
roleCreationInfo.Order = 4;
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.Add(roleCreationInfo);
clientContext.ExecuteQuery();
Console.WriteLine("{0} role created.", oRoleDefinition.Name);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateRoleDefinition
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim permissions As New BasePermissions()
permissions.Set(PermissionKind.CreateAlerts)
permissions.Set(PermissionKind.ManageAlerts)
Dim roleCreationInfo As New RoleDefinitionCreationInformation()
roleCreationInfo.BasePermissions = permissions
roleCreationInfo.Description = "A new role with create and manage alerts permission"
roleCreationInfo.Name = "Create and Manage Alerts"
roleCreationInfo.Order = 4
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.Add(roleCreationInfo)
clientContext.ExecuteQuery()
Console.WriteLine("{0} role created.", oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
function createRoleDefinition() {
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
var permissions = new SP.BasePermissions();
permissions.set(SP.PermissionKind.createAlerts);
permissions.set(SP.PermissionKind.manageAlerts);
var roleCreationInfo = new SP.RoleDefinitionCreationInformation();
roleCreationInfo.set_basePermissions(permissions);
roleCreationInfo.set_description('A new role with create and manage alerts permission');
roleCreationInfo.set_name('Create and Manage AlertsT');
roleCreationInfo.set_order(4);
this.oRoleDefinition = oWebsite.get_roleDefinitions().add(roleCreationInfo);
clientContext.load(oRoleDefinition);
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oRoleDefinition.get_name() + ' role created.';
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Zuweisen einer Rolle auf einer Website zu einem Benutzer
Wenn Sie einem Benutzer eine bestimmte Rolle auf einer Website zuweisen möchten, erstellen Sie ein RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection) für den Websitekontext, fügen Sie dem Bindungssammlungsobjekt eine Rollendefinition hinzu, und fügen Sie dann mit der Add(Principal, RoleDefinitionBindingCollection)-Methode (JavaScript: add(principal, roleBindings)) den Benutzer zusammen mit der Bindungssammlung den Rollenzuweisungen für die Website hinzu. Im folgenden Beispiel wird einem vorhandenen Websitesammlungsbenutzer die im vorherigen Beispiel definierte Rolle zugewiesen.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class AddUserToRole
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
Principal oUser = oWebsite.SiteUsers.GetByLoginName(@"DOMAIN\alias");
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByName("Create and Manage Alerts");
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
collRoleDefinitionBinding.Add(oRoleDefinition);
RoleAssignment oRoleAssignment = oWebsite.RoleAssignments.Add(oUser, collRoleDefinitionBinding);
clientContext.Load(oUser,
user => user.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} added with {1} role.", oUser.Title, oRoleDefinition.Name);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class AddUserToRole
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim oUser As Principal = oWebsite.SiteUsers.GetByLoginName("domain\alias")
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.GetByName("Create and Manage Alerts")
Dim collRoleDefinitionBinding As New RoleDefinitionBindingCollection(clientContext)
collRoleDefinitionBinding.Add(oRoleDefinition)
Dim oRoleAssignment As RoleAssignment = oWebsite.RoleAssignments.Add(oUser, collRoleDefinitionBinding)
clientContext.Load(oUser, _
Function(user) user.Title)
clientContext.Load(oRoleDefinition, _
Function(role) role.Name)
clientContext.ExecuteQuery()
Console.WriteLine("{0} added with {1} role.", oUser.Title, oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection/MyWebSite';
function addUserToRole() {
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
this.oUser = oWebsite.get_siteUsers().getByLoginName('DOMAIN\\alias');
this.oRoleDefinition = oWebsite.get_roleDefinitions().getByName('Create and Manage Alerts');
var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext);
collRoleDefinitionBinding.add(oRoleDefinition);
var oRoleAssignment = oWebsite.get_roleAssignments().add(oUser, collRoleDefinitionBinding);
clientContext.load(oUser, 'Title');
clientContext.load(oRoleDefinition, 'Name');
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oUser.get_title() + ' assigned to ' + oRoleDefinition.get_name();
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Erstellen einer SharePoint-Gruppe und Hinzufügen der Gruppe zu einer Rolle
Verwenden Sie wie beim Erstellen der meisten anderen Objekte mithilfe des Clientobjektmodells die GroupCreationInformation-Klasse (JavaScript: GroupCreationInformation), um eine neue Gruppe zu definieren, und fügen Sie dann mit der Add(GroupCreationInformation)-Methode (JavaScript: add(parameters)) die Gruppe der Sammlung von Websitegruppen in einer Websitesammlung hinzu. Und genau so wie Sie Benutzern eine Rolle zuweisen, weisen Sie einer Gruppe eine bestimmte Rolle auf einer Website hinzu, indem Sie ein RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection) für den Websitekontext erstellen, dem Bindungssammlungsobjekt eine Rollendefinition hinzufügen und dann mit der Add(Principal, RoleDefinitionBindingCollection)-Methode (JavaScript: add(principal, roleBindings)) die Gruppe zusammen mit der Bindungssammlung den Rollenzuweisungen für die Website hinzufügen. Im folgenden Beispiel erstellen Sie eine Gruppe und weisen ihr die Contribute-Rolle auf der Website zu.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateGroupAddToRole
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
GroupCreationInformation groupCreationInfo = new GroupCreationInformation();
groupCreationInfo.Title = "My New Group";
groupCreationInfo.Description = "Description of new group.";
Group oGroup = oWebsite.SiteGroups.Add(groupCreationInfo);
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByType(RoleType.Contributor);
collRoleDefinitionBinding.Add(oRoleDefinition);
oWebsite.RoleAssignments.Add(oGroup, collRoleDefinitionBinding);
clientContext.Load(oGroup,
group => group.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} created and assigned {1} role.", oGroup.Title, oRoleDefinition.Name); }
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateGroupAddToRole
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim groupCreationInfo As New GroupCreationInformation()
groupCreationInfo.Title = "My New Group "
groupCreationInfo.Description = "Description of new group."
Dim oGroup As Group = oWebsite.SiteGroups.Add(groupCreationInfo)
Dim collRoleDefinitionBinding As New RoleDefinitionBindingCollection(clientContext)
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.GetByType(RoleType.Contributor)
collRoleDefinitionBinding.Add(oRoleDefinition)
oWebsite.RoleAssignments.Add(oGroup, collRoleDefinitionBinding)
clientContext.Load(oGroup, _
Function(group) group.Title)
clientContext.Load(oRoleDefinition, _
Function(role) role.Name)
clientContext.ExecuteQuery()
Console.WriteLine("{0} created and assigned {1} role.", oGroup.Title, oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection/MyWebSite';
function createGroupAddToRole() {
var clientContext = new SP.ClientContext(siteUrl);
this.oWebsite = clientContext.get_web();
var groupCreationInfo = new SP.GroupCreationInformation();
groupCreationInfo.set_title('My New GroupT');
groupCreationInfo.set_description('Description of new group.');
this.oGroup = oWebsite.get_siteGroups().add(groupCreationInfo);
var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext);
this.oRoleDefinition = oWebsite.get_roleDefinitions().getByType(SP.RoleType.contributor);
collRoleDefinitionBinding.add(oRoleDefinition);
var collRollAssignment = oWebsite.get_roleAssignments();
collRollAssignment.add(oGroup, collRoleDefinitionBinding);
clientContext.load(oGroup, 'Title');
clientContext.load(oRoleDefinition, 'Name');
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oGroup.get_title() + ' created and assigned to ' + oRoleDefinition.get_name();
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Informationen und Beispiele zur Arbeitsweise mit Clientobjekten im Kontext des Microsoft SharePoint Foundation 2010-Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.
Siehe auch
Konzepte
Gewusst wie: Verwenden von Benutzern und Gruppen
Gewusst wie: Unterbrechen der Vererbung von Rollenzuweisungen
Autorisierung, Benutzer und Gruppen
Richtlinien für das Clientobjektmodell
Allgemeine Programmieraufgaben