Je suis en train d'étudier la meilleure façon de concevoir un système d'autorisations pour un "admin" de l'application web. L'application est susceptible d'avoir de nombreux utilisateurs, dont chacun peut être affecté un certain rôle; certains de ces utilisateurs peuvent être autorisés à effectuer des tâches spécifiques en dehors du rôle.
Je pense à deux manières de concevoir ceci: l'un, avec un "autorisations" de table avec une ligne pour chaque utilisateur, booléens et de colonnes, une pour chaque tâche, que de leur attribuer des autorisations pour effectuer ces tâches. Comme ceci:
ID d'utilisateur Gérer les Utilisateurs Gérer les Produits de Gérer des Promotions gestion des Commandes 1 true true true true 2 faux vrai vrai vrai 3 faux faux faux vrai
Une autre façon j'ai pensé a utiliser un masque de bits pour stocker ces autorisations de l'utilisateur. Cela permettrait de limiter le nombre de tâches qui pourraient être gérés à 31 pour un entier signé 32 bits, mais dans la pratique, nous sommes peu de chances d'avoir plus de 31 des tâches spécifiques qu'un utilisateur peut effectuer. De cette façon, le schéma de base de données serait plus simple, et nous n'aurions pas à modifier la structure de la table à chaque fois que nous avons ajouté une nouvelle tâche qui aurait besoin de contrôle d'accès. Comme ceci:
ID d'utilisateur des Permissions (8 bits de masque), serait ints dans le tableau 1 00001111 2 00000111 3 00000001
Quels sont les mécanismes qui ont les gens d'ici généralement utilisé, et pourquoi?
Merci!