Partager via


Procédure : ajouter une entrée de contrôle d'accès à un objet de métadonnées

Vous devez accorder des autorisations aux utilisateurs pour qu'ils puissent exécuter des méthodes, modifier des paramètres et définir des autorisations sur un objet de métadonnées. Cet exemple de code explique comment utiliser le modèle objet pour ajouter des entrées de contrôle d'accès aux objets de métadonnées. Le premier exemple ajoute une entrée de contrôle d'accès pour l'utilisateur actuel. Le deuxième exemple ajoute un utilisateur mentionné dans l'exemple. Notez que vous pouvez utiliser le caractère spécial | (barre verticale) pour octroyer une combinaison de droits aux utilisateurs.

Exemple

Cet exemple ajoute une entrée de contrôle d'accès pour l'utilisateur actuel et à un utilisateur spécifié.

Conditions préalables requises

Références de projet

Ajoutez les références de projet suivantes dans votre projet de code d'application de console avant d'exécuter cet exemple :

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class GetStartedAndCreateSystem
    {
        const string yourSSPName ="EnterYourSSPNameHere";
        const string userName ="domainname\\username";

        static void Main(string[] args)
        {
            SetupBDC();
            SetAccessControlListForCurrentUser();
            SetAccessControlListForSpecifiedUser();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }
        public static void SetAccessControlListForCurrentUser()
        {
            LobSystemInstance mySysInstance = null;
            LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
            foreach (LobSystemInstance sysInstance in sysInsCollection)
            {
                if (sysInstance.Name == "AdventureWorksSampleFromCode")
                {
                    mySysInstance = sysInstance;
                    break;
                }
            }
            LobSystem ls = mySysInstance.LobSystem;
            IAccessControlList acl = ls.GetAccessControlList();
            String currentIdentity = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.Execute));
            try
            {
                ls.SetAccessControlList(acl);
            }

            catch (AccessDeniedException)
            {
            }
        }

        public static void SetAccessControlListForSpecifiedUser()
        {
            LobSystemInstance mySysInstance = null;
            LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
            foreach (LobSystemInstance sysInstance in sysInsCollection)
            {
                if (sysInstance.Name == "AdventureWorksSampleFromCode")
                {
                    mySysInstance = sysInstance;
                    break;
                }
            }
            LobSystem ls = mySysInstance.LobSystem;
            IAccessControlList acl = ls.GetAccessControlList();
            //replace the domain and user names here
            String currentIdentity = userName;
            acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.UseInBusinessDataInLists | BdcRights.SelectableInClients));
            try
            {
                ls.SetAccessControlList(acl);
            }
            catch (AccessDeniedException)
            {
                //your exception handling code here
            }
            Console.WriteLine("Done");
        }
    }
}

Voir aussi

Autres ressources

Catalogue de données métiers : modèle de métadonnées