Question

J'ai pensé à l'application web que je suis sur le point de commencer à développer et de se demander si mon approche habituelle pourrait être améliorée.

Dans mes dernières applications que j'ai créé une table (voir ci-dessous) des rôles (tels que CREATE POST, EDIT POST etc.) qui ont chacun un champ de bits appliqué à leur disposition afin que je peux simplement attribuer à un utilisateur certains droits d'enregistrement et de contrôle les plus tard (par exemple $user->hasRight(CREATE_POST)).

Je me demande s'il y a une meilleure approche à ce sujet. Il est certainement source de confusion lorsque les droits ne sont pas spécifiquement liés à l'utilisateur (je pourrais avoir une table où chaque droit est une colonne booléenne mais uniquement les sons comme une petite amélioration) - et ce qui se passe si je change un peu autour

Je ne cherche pas à utiliser des bibliothèques standard (l'application elle-même est une expérience d'apprentissage pour moi: en utilisant postgresql, git, etc.) bien que je suis parfaitement heureux de s'en inspirer pour construire ma propre - donc s'il y a quelque chose spécial que vous pensez que je devrais jeter un oeil à dire s'il vous plaît:)

Était-ce utile?

La solution

C'est fondamentalement la même approche que je prends dans mes propres applications Web (et un peu d'essais et d'erreurs est entré dans ce que pour moi). La seule différence est, je serais probablement utiliser une table qui a les autorisations différentes sous forme de colonnes, de sorte que si vous souhaitez ajouter d'autres autorisations plus tard, vous pouvez. En utilisant bits dans un entier vous limite à un nombre fixe d'autorisations, à savoir autant de bits qu'il ya dans l'entier. Typiquement ce serait 32 que je suppose est probablement assez, mais je préfère ne pas me limiter de cette façon.

Pour ce que ça vaut la peine, c'est aussi le modèle qui utilise phpBB (autorisations sous forme de colonnes de table), et si elle est assez bon pour l'application web PHP sans doute le plus populaire, il est probablement assez bon pour vous; -)

Autres conseils

Vous pouvez jeter un oeil à la documentation de Spring Security (anciennement Acegi), qui est un framework Java largement utilisé ACL.

La documentation est exhaustive et décrit également les diverses considérations faites dans la conception de l'authentification et de l'autorisation de bot. Même sans utiliser Java, il est digne de lecture.

Vous pouvez voir la page d'index obtenir une vue d'ensemble et une impression de ce que Acegi fait (et ne fonctionne pas) faire. Vous pouvez également aller directement à la page concepts d'autorisation ou même .

Je suis sûr que vous avez trouvé phpgacl déjà, mais voici un lien si vous avez pas. Il peut être un peu rude pour envelopper autour de votre tête au début, et certainement la bibliothèque est délicate (du temps) à mettre en œuvre dans un projet, mais la documentation et de démonstration sont des points de référence excellent.

PHP générique de contrôle d'accès Listes

Le Zend Framework a un ACL qui est similaire à ce que vous essayez de faire.

ACL approche dans les applications Web, en général, ont été discutés, par exemple .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top