2010-02-23 6 views
1

Hi Sitepoint wizard people,Comment restreindre l'accès d'un utilisateur à un objet?

Disons que nous avons une application d'administration qui a plusieurs utilisateurs et divers objets. Ce que je voudrais faire, c'est contrôler l'accès au sein de l'objet lui-même - c'est-à-dire qu'il se comportera d'une façon pour un type d'utilisateur, et d'une autre manière pour les autres utilisateurs. Par exemple ...

Le directeur Mike peut remplacer la date d'enregistrement de l'utilisateur de réception Sally. On supposerait que Mike pourrait fixer n'importe quelle date dans le passé ou dans le futur. Ensuite, nous avons l'utilisateur de la paie, Steve, qui peut également modifier la date d'inscription de Sally, mais seulement pour les dates antérieures (par exemple) il y a un an. Pour pimenter les choses, nous avons le directeur des ressources humaines Marie qui peut également modifier la date d'enregistrement de Sally, mais seulement pour les dates de précisément 23 Juin 2007 sauvegarde jusqu'à un mois à partir de maintenant ...

Comment programmer l'accès restrictions de sorte que sur le frontal, le contrôle de formulaire est limité avec une date min et max, et dans le backend, le validateur vérifie la date entrée pour s'assurer qu'il tombe entre ces dates? Je dois évidemment être capable de modifier les dates min et max pour chaque type d'utilisateur. D'autres objets peuvent avoir des paramètres différents - montant maximum sur un champ de remise ou jours de la semaine pour les heures supplémentaires, par exemple.

J'ai posé cette question de différentes façons, mais chaque fois que je suis embourbé dans la mise en œuvre. Je suis en train de le développer en tant qu'application web php/MySQL, mais les pensées et commentaires des autres plateformes sont les bienvenus! Cette fois-ci, je regarde les premiers principes, donc peu importe vos antécédents, si vous avez des idées, faites-le moi savoir! Comment appelez-vous ce type de contrôle d'accès?

+0

Assurez-vous de répondre à la question si votre problème est résolu. – ALOToverflow

Répondre

1

En fonction de la manière dont votre application est basée, vous pouvez demander des informations d'identification au début de l'application et, en fonction des utilisateurs nécessitant un accès, vous pouvez charger un fichier xml différent contenant différents paramètres. En ce qui concerne le problème de sécurité, assurez-vous que les différents fichiers xml ne peuvent pas être atteints par les utilisateurs.

Edit:
Depuis que vous utilisez MySQL, vous pouvez faire quelque chose comme ça. Supposons que vous ayez une table d'utilisateurs avec ces champs: UserId, UserName, RestrictionId.
Et avec une table de restriction qui ressemble à: RestrictionId, FieldName, FieldCondition. De cette façon, dans votre application php, lorsqu'un utilisateur est authentifié, vous pouvez aller chercher les "Restrictions" correctes dans le champ et les appliquer dans votre code. S'il arrive que vous ayez plusieurs champs qui nécessitent des règles différentes, vous pouvez simplement les ajouter avec le bon RestrictionId.

Cette conception de DB est loin d'être parfait, je suis sûr que vous pouvez faire mieux

+0

Auriez-vous des liens vers un exemple de la façon dont le fichier xml pourrait être structuré? J'utiliserais probablement une base de données, mais les principes sont les mêmes. Merci – boatingcow

+0

Ajout d'un exemple pour la base de données. – ALOToverflow

+0

Merci pour votre édition - Je me sentirais plus à l'aise si je pouvais voir ce type de chose en action quelque part - connaissez-vous des scripts, des cadres, des applications qui le font déjà pour que je puisse le vérifier? – boatingcow

0

Depuis, vous utilisez déjà db MySql. Vous pouvez gérer les détails de la table UserRole Master dans la base de données elle-même. Chargez les données de rôle utilisateur en fonction de la connexion, puis vous pouvez facilement valider les modifications apportées par l'utilisateur en conséquence.

+0

Merci pour votre réponse - avez-vous des indications sur la façon dont les données de rôle pourraient être stockées? Je suis habitué au type booléen ALLOW/DENY dans mon db, alors comment pourrais-je stocker à la fois ALLOW/DENY et quelque chose d'aussi différent que "-1 year", "2007-06-23", "<£ 50" dans mon db ? – boatingcow

Questions connexes