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
Dans le projet serveur, ouvrez le fichier Web.config.
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>
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.
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
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; } }
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