Dans la plupart des applications, il est nécessaire de contrôler l'accès, en fonction du rôle de l'utilisateur. Dans cette leçon, nous allons étudier un exemple de mise en place d'un tel contrôle pour une application Web. Dans le cadre de cette tâche, vous devrez :

  • Définir le rôle de l'utilisateur.
  • En fonction du rôle, contrôler l'affichage des éléments du menu de navigation
  • Rendre impossible la navigation vers les pages qui ne sont pas accessibles à un rôle spécifique.

Préparation initiale

Commençons par la partie préparatoire. Pour faciliter la configuration ultérieure, il est nécessaire de créer une variable globale qui stockera les informations sur l'utilisateur actuel. Ainsi, si vous devez effectuer un contrôle, vous n'aurez pas besoin de contacter le backend à chaque fois et de demander des informations sur l'utilisateur. Il suffira de lire les données nécessaires à partir de la variable globale.


Il est nécessaire de prendre en compte les différentes options par lesquelles un utilisateur autorisé peut entrer dans l'application :

  • Connexion à la suite d'une autorisation réussie sur la page Login.
  • Connexion à la suite d'un enregistrement.
  • Connexion directe via un lien vers une page spécifique pour les utilisateurs déjà autorisés.

Dans chacun de ces cas, on utilise une requête backend qui renvoie des informations sur l'utilisateur. Dans le processus métier correspondant, il suffit d'ajouter un bloc Set Variable pour enregistrer la variable globale User_gv que vous avez créée précédemment.

Ce bloc est ajouté au CheckAuth processus métier pour les utilisateurs autorisés, qui se trouve dans le dossier Prebuilt dans la section des processus d'affaires.

Pour entrer par les pages de connexion ou d'inscription, le bloc est ajouté aux processus métier des boutons correspondants.

Vérifions le résultat sur la page de démarrage de l'application. Pour ce faire, ajoutons un Label qui saluera l'utilisateur par son nom et, en fonction de son rôle, écrira s'il est administrateur ou non.

Vous devez mettre en place un processus métier qui se déclenche lorsqu'un Label est affiché (Label onShow trigger).

  1. Expand User. Pour des informations sur le nom et les rôles de l'utilisateur.
  2. In Array. Pour vérifier si l'utilisateur donné est dans le Admins groupe.
  3. If-Else. Pour la variabilité des actions en fonction des résultats de la vérification.
  4. Set Variable (String). Pour créer une variable String avec une valeur de "NOT "si l'utilisateur n'est pas membre du groupe ou une valeur vide s'il l'est. Admins groupe ou une valeur vide s'il l'est.
  5. Concat Strings (Multiple). Pour créer une phrase complète comme "Hi, Ken. You are NOT Admin".
  6. Label Update Properties. Pour l'affichage final de cette phrase sur la page.

Si tout est fait correctement, alors avec n'importe quelle variante d'entrée sur la page, l'écran aura un résultat similaire.

Contrôle de la visibilité des éléments de menu

Il est maintenant temps de passer à la partie principale. Créons une page destinée uniquement aux admins et ajoutons l'élément de menu correspondant (Admin Page) pour y accéder. La meilleure solution est de désactiver sa visibilité par défaut.

A l'aide du bloc Navigate vous devez sélectionner la page créée dans le paramètre Page et connaître l'ID de cette page.

Dans cet exemple, il n'y a qu'une seule page à accès restreint, mais il est préférable de prévoir immédiatement l'option lorsqu'il peut y avoir plusieurs pages de ce type et de créer une variable globale en lecture seule pour stocker la liste des pages.

Ensuite, vous devez créer le processus métier lui-même (appelons-le Set NavItem Visibility) pour contrôler la visibilité des éléments du menu de navigation.

  1. Expand User. Pour des informations sur les rôles des utilisateurs.
  2. In Array. Pour vérifier si l'utilisateur donné est dans le Admins groupe.
  3. For each loop. Pour exécuter la boucle pour toutes les pages spécifiées dans la variable globale.
  4. NavItem Update Properties. Pour contrôler la visibilité d'un élément, selon que l'utilisateur est un administrateur ou non.

Le bloc du processus métier créé doit être ajouté avant de passer à la page d'accueil dans les processus métier des boutons de connexion et d'enregistrement des utilisateurs (précédemment, Set Variable étaient ajoutés à ces derniers pour enregistrer une variable contenant des informations sur l'utilisateur actuel).

Contrôle d'accès par lien direct

La dernière chose à faire est de mettre en place un processus métier qui sera exécuté à chaque fois que l'application sera lancée par le déclencheur "On app launch". Comme dans l'étape précédente, ajoutez le bloc Set NavItems Visibility pour les utilisateurs authentifiés.

En outre, il est nécessaire de prévoir une protection contre l'accès à une page fermée via un lien direct :

  1. In Array (Admin_pages). Pour vérifier si la page cible figure dans la liste des pages réservées aux administrateurs.
  2. If-Else. Pour varier les actions en fonction des résultats de la vérification. Si False, vous pouvez naviguer vers la page spécifiée. Dans le cas de True, une vérification supplémentaire du droit d'accès à cette page est nécessaire.
  3. Expand User. Pour lire les informations relatives à l'utilisateur à partir de la variable globale User_gv.
  4. In Array. Pour vérifier l'appartenance au groupe Admins.
  5. If-Else. Pour sélectionner des actions en fonction de la présence ou de l'absence de droits d'administration.
  6. Navigate. Pour aller à la page requise ou pour rediriger vers la page de départ dans le cas où un utilisateur sans droits appropriés tente d'ouvrir une page destinée uniquement aux admins.

Les pages sélectionnées sont maintenant protégées contre tout accès non autorisé. En l'absence de droits, elles ne sont pas affichées dans le menu et ne sont pas accessibles, même par un lien direct.

Il est important de rappeler que la protection de l'accès à certaines pages ne signifie pas une protection automatique des terminaux qui peuvent être utilisés sur ces pages. Pour ce faire, si nécessaire, dans les Middleware Token Auth paramètres, vous devez spécifier les groupes d'utilisateurs qui ont des droits d'accès à l'endpoint sélectionné.

Was this article helpful?

AppMaster.io 101 Cours accéléré

10 Modules
2 Semaines

Vous ne savez pas par où commencer ? Lancez-vous avec notre cours accéléré pour débutants et explorez AppMaster de A à Z.

Début du cours
Development it’s so easy with AppMaster!

Besoin d'aide?

Résolvez n'importe quel problème avec l'aide de nos experts. Gagnez du temps et concentrez-vous sur la création de vos applications.

headphones

Contactez le support

Parlez-nous de votre problème et nous vous trouverons une solution.

message

Chat communautaire

Discutez de questions avec d'autres utilisateurs dans notre chat.

Rejoindre la Communauté