Procédure : Activer les rôles dans les Services RIA

Cette rubrique montre comment activer les rôles dans votre solution Services RIA WCF si vous avez auparavant activé la certification. Vous ne pouvez récupérer les rôles d'un utilisateur qu'une fois celui-ci authentifié. Pour configurer votre solution en vue d'activer la certification, consultez Procédure : Activer le service d'authentification des Services RIA. Limiter l'accès à une opération de domaine aux seuls membres d'un rôle s'effectue en appliquant l'attribut RequiresRoleAttribute à la méthode permettant l'opération de domaine.

Les rôles servent à spécifier quel groupe d'utilisateurs authentifiés peut accéder à certaines ressources. Dans les Services RIA , ils reposent sur des rôles dans ASP.NET. Pour plus d'informations sur les rôles, consultez Comprendre la gestion des rôles

Pour configurer le projet serveur

  1. Dans le projet serveur, ouvrez le fichier Web.config.

  2. Dans la section <system.web>, activez le rôle de gestionnaire en ajoutant l'élément <roleManager>.

    L'exemple suivant montre comment activer le rôle de gestionnaire.

    <system.web>
      <authentication mode="Forms"></authentication>
      <roleManager enabled="true"></roleManager>
    </system.web>
    
  3. Dans la base de données des membres, créez les rôles requis et affectez-leur les utilisateurs en fonction des besoins.

    Pour plus d'informations, consultez Comprendre la gestion des rôles Pour voir un exemple de création de rôles, consultez Procédure pas à pas : Utilisation du service d'authentification avec une application métier Silverlight ou Procédure pas à pas : Utilisation du service d'authentification avec une application de navigation Silverlight.

  4. Pour limiter l'accès d'une opération de domaine aux seuls membres d'un rôle spécifié, appliquez l'attribut RequiresRoleAttribute à l'opération de domaine.

    L'exemple suivant spécifie que seuls les membres du rôle de gestionnaire (Managers) peuvent accéder à l'opération de domaine.

    <RequiresRole("Managers")> _
    Public Function GetCustomers() As IQueryable(Of Customer)
        Return Me.ObjectContext.Customers
    End Function
    
    [RequiresRole("Managers")]
    public IQueryable<Customer> GetCustomers()
    {
        return this.ObjectContext.Customers;
    }
    

Pour accéder aux rôles dans le projet client

  1. Vérifiez si l'utilisateur appartient au rôle requis, accédez à la propriété Roles ou appelez la méthode IsInRole sur l'objet WebContext.Current.User.

    L'exemple suivant vérifie si l'utilisateur appartient à un rôle nommé Managers avant d'appeler l'opération de domaine.

    Private Sub LoadRestrictedReports()
        Dim loadSales = context.Load(context.GetSalesOrderHeadersQuery().Take(numberOfRows))
        SalesOrdersGrid.ItemsSource = loadSales.Entities
        SalesOrdersGrid.Visibility = System.Windows.Visibility.Visible
    
        If (WebContext.Current.User.IsInRole("Managers")) Then
            Dim loadCustomers = context.Load(context.GetCustomersQuery().Take(numberOfRows))
            CustomersGrid.ItemsSource = loadCustomers.Entities
            CustomersGrid.Visibility = System.Windows.Visibility.Visible
        Else
            CustomersGrid.Visibility = System.Windows.Visibility.Collapsed
        End If
    End Sub
    
    private void LoadRestrictedReports()
    {
        LoadOperation<SalesOrderHeader> loadSales = context.Load(context.GetSalesOrderHeadersQuery().Take(numberOfRows));
        SalesOrdersGrid.ItemsSource = loadSales.Entities;
        SalesOrdersGrid.Visibility = System.Windows.Visibility.Visible;
    
        if (WebContext.Current.User.IsInRole("Managers"))
        {
            LoadOperation<Customer> loadCustomers = context.Load(context.GetCustomersQuery().Take(numberOfRows));
            CustomersGrid.ItemsSource = loadCustomers.Entities;
            CustomersGrid.Visibility = System.Windows.Visibility.Visible;
        }
        else
        {
            CustomersGrid.Visibility = System.Windows.Visibility.Collapsed;
        }
    }
    
  2. Si vous voulez rendre l'objet WebContext disponible dans XAML, ajoutez l'instance WebContext actuelle aux ressources de l'application dans l'événement Application.Startup avant de créer le visuel racine.

    L'exemple suivant montre comment ajouter l'instance WebContext comme une ressource d'application.

    Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
        Me.Resources.Add("WebContext", WebContext.Current)
        Me.RootVisual = New MainPage()
    End Sub
    
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        this.Resources.Add("WebContext", WebContext.Current);
        this.RootVisual = new MainPage();
    }
    

Voir aussi

Tâches

Procédure pas à pas : Utilisation du service d'authentification avec une application de navigation Silverlight
Procédure pas à pas : Utilisation du service d'authentification avec une application métier Silverlight