Je développe un système dans lequel nous souhaitons limiter la disponibilité des informations affichées aux utilisateurs en fonction de leurs rôles.Comment affecter des rôles d'appartenance .net à des enregistrements de base de données individuels
par exemple. J'ai appelé EventType (ID, EventTypeDescription)
déposé qui contient les documents suivants:
1, 'Basic Event'
2, 'Intermediate Event'
3, 'Admin Event'
Ce que je dois obtenir est de filtrer les enregistrements renvoyés en fonction du nom d'utilisateur (et donc le rôle) de l'utilisateur connecté. Par exemple, si un utilisateur avancé est connecté, il verra tous les types d'événements, si l'utilisateur standard est connecté, il ne verra que le type d'événement de base, etc.
Idéalement, je voudrais faire cela d'une manière qui peut être facilement étendu à d'autres tables si nécessaire. Donc, je voudrais éviter d'ajouter simplement un champ "Rôles" à chaque table où les données sont sensibles au contexte de l'utilisateur.
Une idée je pense est de créer une sorte de permissions table comme:
PermissionsTable
(
ID,
Aspnet_RoleId,
TableName,
PrimaryKeyValue
)
ce qui a l'inconvénient d'utiliser ce système est évidemment d'avoir à utiliser le nom de la table pour changer la table à se joindre sur .
Edit: En l'absence de meilleures suggestions, je vais aller avec la dernière idée je l'ai mentionné, mais au lieu d'avoir un champ TableName, je vais normaliser la TableName vers son propre table comme suit:
TableNames
(
ID,
TableName
)
UserPermissionsTable
(
ID,
Aspnet_UserId,
TableID,
PrimaryKeyValue
)
juste une pensée mais si vous allez avec 1 base, 2 intermédiaires, 3 option admin alors vous devriez mettre un espace entre ces chiffres comme 10 20 30 de sorte qu'il vous donne une certaine marge pour mettre des codes supplémentaires entre les deux à l'avenir. Cela vous permettrait de trier la table par les codes et de tester si (admin) affiche ensuite admin-level-or-less. – rtpHarry