2008-11-19 11 views
2

J'utilise le modèle de référentiel pour interroger notre base de données à l'aide de NHibernate. Il est vraiment facile de faire des choses comme:Comment gérer l'autorisation lors de l'utilisation de NHibernate dans .NET

publique T GetById (int id) {...}

Mais cela ne vous aide pas beaucoup quand quelqu'un commence déblayage avec les querystrings voir les choses qu'ils aren » t autorisé à.

Pour Compound, certains objets sont des enfants profondément imbriqués de l'objet parent qui doit être effectué sur l'autorisation.

Pour blog par exemple -> auteur -> post -> commentaire. Dans cet exemple artificiel, nous aimerions donner aux auteurs la possibilité de modifier leurs propres messages et commentaires sur ces articles, mais pas de voir ou d'éditer ceux des autres auteurs. Il est facile de vérifier que le message appartient à l'auteur, il est un peu plus difficile de s'assurer que le commentaire appartient à l'auteur. Nous avons des exemples qui vont plus loin.

Alors ... comment l'autorisation faisons-nous (dans le modèle ou référentiel)?

Répondre

1

Vous pouvez mettre en œuvre le modèle de décorateur - Je suppose que vous utilisez un DP/IoC Container pour injecter votre IRepositories?

Vous souhaitez créer un ISecureRepository qui vérifie les appels sont valides pour le type utilisateur/demande, puis passé le rappel sur le IRepository. Cela vous donne également la possibilité d'appeler la méthode, puis vérifier le type de retour ...

Vous auriez alors la configuration que vous êtes IoC d'utiliser un ISecureRepository enroulé autour IRepository ...

sons si simple ...